0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dbt Project on Snowflake

Posted at

開発 → 運用(CI/CD)→ 観測(モニタリング)を Snowflake でどう構成するか

本記事では dbt Project on Snowflake を題材に、
dbt の基礎から、Snowflake 上での 開発・CI/CD・運用・観測 までのライフサイクルを
どのように一貫して構成できるのかを整理します。


1. dbt の基本説明(前提)

1.1 dbt とは?

dbt は、ETL プロセスの中で T(Transform) を担うツールです。

  • DWH(データウェアハウス)に接続
  • SQL による変換ロジック を開発・管理
  • 実行は DWH 側へ「プッシュ」する方式

Snowflake 利用者の間でも、dbt は非常に高い採用率を持つツールとして使われています。


1.2 提供形態(2 種類)

  • dbt Core(OSS)
    • コマンドラインベースで実行
  • dbt Platform(SaaS / dbt Cloud)
    • dbt Core をベースに GUI・チーム運用機能を追加

1.3 dbt の主な特徴(なぜ広く使われているのか)

① SQL SELECT のみで変換ロジックを記述

  • 手続き的な処理ではなく「最終形」を宣言
  • 可読性・理解容易性・保守性が高い

② テンプレート・マクロによる再利用

  • Jinja テンプレート
  • 事前定義マクロによるロジック部品化

ref() によるテーブル参照

  • 実テーブル名をハードコードせずに参照可能
  • 依存関係が自動構築され、リネージ(lineage)まで連携可能

2. 本題:dbt Project on Snowflake とは何が変わるのか

2.1 核となるメッセージ

従来は dbt Core を Snowflake とは別の実行基盤 にホスティングする必要がありました。

dbt Project on Snowflake では、

dbt Core を Snowflake 環境上でホスト・運用できる

という点が最大の特徴です。


2.2 期待される効果(メリット)

  • 別インフラ構築・運用コストの削減
  • Snowflake の周辺機能と組み合わせた活用が可能

具体例:

  • Snowflake Tasks によるスケジューリング
  • RBAC(ロールベースアクセス制御) による統一ガバナンス
  • Observability(ログ・トレース) との統合

これまで「dbt + 外部ツール」で構成していた世界を
Snowflake 内でより完結 させる方向性です。


3. dbt プロジェクト構造(用語整理)

3.1 dbt Project(ディレクトリ)とは?

  • 設定ファイル
  • SQL モデル
  • テスト定義

など、変換に関わるファイル群の集合

dbt はこの「プロジェクト」単位で
build / test / deploy を実行します。


3.2 Snowflake 独自概念:dbt Project Object

Snowflake では dbt Project を
スキーマレベルのオブジェクト として扱えます。

主な利点

  • SQL コマンドで作成・変更・実行が可能
    CI/CD に組み込みやすい
  • オブジェクト単位で バージョン切替(昇格 / ロールバック) が可能

4. ライフサイクル全体像

(開発 → 検証 → 配布 / 実行 → 観測)

4.1 なぜ CI/CD が重要か

データパイプラインは、

  • 日々変化する
  • 高い安定性が求められる

CI/CD がない場合、

  • 環境差分
  • 個人依存(属人化)
  • バージョン管理不備

といったリスクが蓄積し、運用が破綻しやすくなります。


4.2 dbt on Snowflake が提供する構成要素

  • 開発 / デバッグ:Workspace による独立 Dev 環境
  • 検証:本番相当環境での事前確認
  • 自動化:Snowflake CLI × GitHub Actions 等
  • 運用実行:Snowflake Tasks
  • 観測:Snowflake のログ / トレース

5. 開発環境:Workspace

  • ディレクトリベースでコード管理
    → IDE に近い開発体験
  • Git 連携(pull / push / ブランチ切替)を GUI で操作可能
  • Shared Workspace により RBAC ベースの共有も可能
    (従来の Worksheet の制約を解消)

6. dbt Project の実行方法(2 パターン)

① Workspace から直接実行

  • Workspace URI を FROM に指定
  • オブジェクト正式作成前の 即時検証 に有効

② デプロイ済み dbt Project Object を実行

  • 安定版を 定期実行・本番運用 に載せる用途

7. オーケストレーション(実行制御)

  • Airflow 等の外部ツールからの制御も可能
  • ただし Snowflake Tasks を使えば
    Snowflake 内でオーケストレーションを完結可能

8. モニタリング(観測)3 つの軸

① Snowsight ダッシュボード

  • アカウント全体ビュー
  • プロジェクト単位ビュー

② OpenTelemetry 準拠イベントテーブル

  • 実行を細粒度で分解
  • ボトルネック分析が可能

③ dbt Artifacts

  • 実行後に生成されるログ・成果物を Snowflake でも管理

9. 配布(dbt プロジェクトの配置先:4 パターン)

dbt プロジェクトは Snowflake 内の以下に配置可能:

  1. 内部 Stage
    • CLI / PUT / Snowsight からアップロード
  2. Git Repository Stage
    • 既存 Git 管理環境と親和性が高い
  3. Workspace
    • 開発から実行までワンストップ
    • dbt 特化 GUI を標準提供
  4. dbt Project Object 自体
    • 実体はファイル集合
    • バージョン管理が容易

※ Workspace 以外の配置場所からでも
CREATE DBT PROJECT … FROM <location> により
オブジェクト作成・更新が可能。


10. CI/CD 連携:Snowflake CLI と snow-dbt-deploy

10.1 Snowflake CLI

  • Snowflake 公式のコマンドラインツール
  • dbt Project Object をサポート
  • GitHub Actions 等から直接実行可能

10.2 snow-dbt-deploy(代表的コマンド)

dbt Project Object の作成・更新を 一括で実行

内部的な流れ:

  1. セッション終了時に削除される 一時 Stage を作成
  2. ファイルコピー
  3. CREATE / ALTER 実行
    • 初回:CREATE
    • 既存:ALTER で更新

まとめ

dbt Project on Snowflake により、

  • dbt の開発
  • CI/CD
  • 実行管理
  • 可観測性

Snowflake 上で一貫して設計・運用 できるようになります。

「dbt + 周辺ツール」構成を見直している方にとって、
設計・運用のシンプル化を検討する一つの選択肢になるはずです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?