Snowflake ガイド

Snowflake データウェアハウスガイド

概要と目的

Snowflake は私たちのエンタープライズデータウェアハウス(EDW)であり、エンタープライズデータプラットフォームのコアテクノロジーです。

Snowflake に含まれるもの

Snowflake にはすべての分析データが含まれており、データソースが利用可能な元データ/生データのセットを定義しています。

関連コンテンツ

ログイン

Okta から Snowflake にログインしてください。

UI のナビゲート

Snowflake の Web インターフェースのクイックツアーで UI に関する包括的なドキュメントが提供されています。

Snowflake アカウント設定

ABORT_DETACHED_QUERY

ABORT_DETACHED_QUERY パラメーターはアカウントレベルで True に設定されています。

接続が失われてクエリが実行を続けるが完了しないケースがよくあります。このような場合、クエリが実行し続けることは意味がなく、価値を追加しません。5分間の猶予期間があります。接続が5分で復旧しない場合は、ウェアハウスが不必要に実行しないよう実行が停止されます。

データ鮮度

MonteCarlo の自動モニターを活用してデータの鮮度を監視しています。

Snowflake ウェアハウスサイジングガイド

主要な原則

  1. すべての開発作業ではデフォルトで XS から開始する(Snowsight、Tableau、ローカル dbt 開発など、すべての環境)。特定のクエリやワークフローが必要とする場合にのみサイズアップし、その後サイズダウンしてください。

  2. 過剰プロビジョニングの主なシグナル: XS より大きいウェアハウスでクエリを実行しているが 30 秒未満で完了する場合、クレジットを無駄にしている可能性があります。

ウェアハウスサイジングクイックリファレンス

ウェアハウスユースケーススキャンパーティション数概算レコード数目標クエリ時間
XSmall (XS)クイックルックアップ、単一行クエリ、小さな集計、dbt テスト<4,0000-5億レコード2分未満
Small (S)ダッシュボードクエリ(事前集計済み)、軽量な分析、アドホック探索2,000-8,0002.5億-10億レコード30秒-2分
Medium (M)標準的な分析、中程度の複雑さの JOIN、典型的な dbt モデル4,000-16,0005億-30億レコード30秒-3分
Large (L)重い分析、複雑な変換、大きなテーブルスキャン8,000-32,00010億-50億レコード1-10分
XLarge (XL)非常に大規模なデータ処理、複雑な ETL、マルチテーブル JOIN16,000-64,00020億以上のレコード2-30分
4XL+本番ワークロードの大規模変換(例: Snowplow バックフィル)128,000以上50億以上のレコード10分以上

注意:

  • レコード数の範囲はウェアハウスサイズを大幅に過大評価することの多い非常に大まかなガイドラインです。3億行のテーブルを1週間でフィルタリングすると、M ではなく XS しか必要ない場合があります。クイックな参照としてのみ提供しています。
  • より正確なサイジングには、partitions_scanned(Snowflake ソリューションアーキテクトが提供する範囲)を使用してください。explain コマンドで確認できます: explain select * from my_table where my_filter;

判断フレームワーク: サイズアップするタイミング

より正確なウェアハウス選択のために、以下の3つの変数を考慮してください:

1. テーブルサイズ(出発点)

クリックして展開

テーブルレコード数に基づいた開始ウェアハウスサイズについては上記のマークダウンテーブルを参照してください。

常にテーブルサイズを最初に確認してください:

SELECT COUNT(*) FROM your_table;

2. フィルターの選択性(小さいままでいられるか?)

クリックして展開
時間範囲フィルター(最も強力)

時間ベースの述語は時系列データに対して通常最も選択的です:

  • 1日-1週間: 大規模なテーブルでも XS で実行できます
  • 2-4週間: ベーステーブルサイズに応じて S または M を検討してください
  • 4週間以上: テーブルサイズが主要な要因になります
その他の選択的フィルター
  • 高い選択性(例: event_actionapp_id): パーティションプルーニングに優れています。ブールフラグもプルーニングに効果的な場合があります
  • 低い選択性(低カーディナリティフィールド、例: user_idevent_id): スキャンサイズへの影響は最小限
  • クラスタリングキーフィルター(例: behavior_at): テーブルクラスタリングと整合している場合に最も効果的

ヒント: 完全な結果セットのマテリアライゼーションを避けるために開発中は LIMIT 句を追加してください。

3. クエリの複雑さ(より多くのパワーが必要か?)

クリックして展開
  • シンプルなスキャン: フィルター + 集計 → 推奨サイズに留まる
  • 重い操作: 大きな JOIN、ウィンドウ関数、複雑な集計 → 1レベルアップ
  • マルチテーブル JOIN: 特にフィルタリングされていないディメンションとの場合 → 1-2レベルアップ

実例: mart_behavior_structured_event

これらの例は、最大テーブルの1つでも XS で十分な場合があることを示しています:

例 1: XS で十分(狭い時間範囲の場合)
-- 51 seconds on DEV_XS
-- No LIMIT, but highly filtered time range (3 days)
SELECT *
FROM PROD.COMMON_MART.MART_BEHAVIOR_STRUCTURED_EVENT
WHERE BEHAVIOR_AT BETWEEN '2025-01-01' AND '2025-01-03'
  AND event_action = 'check_policy_scope_for_security_policy'
  AND app_id = 'gitlab';

XS で機能する理由: 3日間の時間ウィンドウ + 特定の event_action = 小さなスキャン

例 2: XS が許容範囲(集計、2週間範囲)
-- 49 seconds on DEV_XS
-- Aggregation with moderate time range
SELECT
    event_action,
    COUNT(*) AS ct
FROM PROD.COMMON_MART.MART_BEHAVIOR_STRUCTURED_EVENT
WHERE BEHAVIOR_AT BETWEEN '2025-02-01' AND '2025-02-15'
GROUP BY ALL
HAVING ct > 50
ORDER BY ct DESC;

XS で機能する理由: 集計により結果セットが削減され、2週間のウィンドウは管理可能

例 3: M が必要(大きな JOIN + 広い範囲)
-- 71 seconds on DEV_M
-- Joins 2TB fact table (filtered) with 260GB dimension (unfiltered)
SELECT *
FROM prod.common.fct_behavior_website_page_view fct
JOIN prod.common.dim_behavior_website_page dim
  ON fct.dim_behavior_website_page_sk = dim.dim_behavior_website_page_sk
WHERE behavior_at >= CURRENT_DATE - 7
  AND dim.app_id = 'docs'
LIMIT 10000;

M が必要な理由: 大きな JOIN + フィルタリングされていないディメンションでより多くのメモリが必要

VS Code の Snowflake 拡張機能

VS Code から Snowflake を使用するには、拡張機能ペインから VS Code 用の Snowflake 拡張機能をインストールしてください。

セットアップ:

  1. まず、ブラウザで Okta 経由で Snowflake UI にログインできることを確認してください。
  2. VS Code の左サイドバーの Snowflake アイコンをクリックして、以下でサインインしてください:
    • アカウント識別子: gitlab
    • 認証方法: シングルサインオン
    • ユーザー名: GitLab の完全なメールアドレス
  3. サインイン をクリックすると、Okta ウィンドウが開きます。SSO を完了して VS Code に戻ってください。

接続後、Snowflake パネルのドロップダウンを使用してロールとウェアハウスを設定してください。

そこから、VS Code で任意の .sql ファイルを開き、Web UI に触れることなく直接クエリを実行できます。


Cortex AI クレジットモニタリングシステム
目次 概要 Cortex AI アクセスの取得方法 アーキテクチャ データベースオブジェクト アクセス分類 通知ロジック ストアドプロシージャ スケジュールタスク セットアップと設定 ランブックとトラ …
Snowflake AI Functions: 利用とコスト管理ガイド
GitLab の Enterprise Data Platform において、コストとトークン消費を管理しながら Snowflake AI Functions を効果的に活用する方法
Snowflake SnowPipe およびタスク失敗時の SNS インテグレーション
概要 Snowpipe はデータ読み込み中にエラーが発生した場合、すなわち Snowpipe 経由またはSnowflake タスクの失敗時に、クラウドメッセージングサービスにエラー通知をプッシュできま …
Snowflake のクラスタリング
Snowflake のクラスタリングを正しく責任を持って使用するためのガイド