自分は普段BigQuery + dbtで構築していますが、Snowflake内でdbtが完結する新機能が出たと聞いて調べてみました。

dbt Projects on Snowflake — Snowflake内でdbtワークフローを完全に実行可能

dbtとは

dbt(data build tool)は、データの変換ルールをSQLファイルとして管理する仕組みです。

イメージとしては 「料理のレシピをノートに書いておく」 こと。レシピがあれば誰が作っても同じ料理ができる。レシピがないと「○○さんの感覚」でしか料理できない。

Excelでのデータ管理だと、こういう問題が起きます。

  • 「この関数、誰が書いたの?」→ わからない
  • 「このシートの計算、合ってる?」→ 検証できない
  • 「新しい人に引き継ぎたい」→ 説明に3日かかる

dbtなら:

  • 変換ルールがSQLファイルとして保存される → バージョン管理できる
  • テストを書ける → 「このカラムにNULLが入ったらエラー」を自動検知
  • ドキュメントが自動生成される → 新しい人でも理解できる

dbt Projects on Snowflake

従来、dbtはSnowflakeの外で動かしていました。dbt CloudやCI/CDパイプラインで実行する形です。

新機能では Snowflakeの中でdbtが完結 します。

  • 環境構築が不要
  • Snowflakeの権限管理がそのまま使える
  • Cortex Code CLIと組み合わせると、自然言語でdbtモデルを操作できる

Cortex Code CLIがdbtとAirflowに統合されたので、「このモデルにテストを追加して」と自然言語で指示できるようになっています。

自分のdbt実務経験

クライアント案件でdbtを使ってデータ基盤を構築した経験があります。

BigQuery上にstaging → intermediate → martsの3層構造を作り、各レイヤーでテストを書きました。

staging/       → 外部データをそのまま取り込む層
intermediate/  → データを整形・結合する層
marts/         → ビジネスロジックを適用した最終形

dbtのテスト機能が品質を劇的に上げました。

  • NOT NULLテスト — 欠損データが入ったら即座に検知
  • uniqueテスト — 重複データが入ったら即座に検知
  • accepted_valuesテスト — 想定外の値が入ったら即座に検知

「誰が作っても同じ結果になる」が実現できた。属人化の解消は、技術の問題ではなくて「仕組みの問題」だと実感しました。

BigQueryでもSnowflakeでも使える

dbtはDWHに依存しません。BigQuery、Snowflake、Redshift、Databricksなどで使えます。

自分はBigQueryメインですが、Snowflakeでも同じdbtモデルが動きます。DWHの選択とdbtの導入は独立した判断で、どちらが先でもいい。

dbtコミュニティ(dbt Tokyoなど)が日本でも活発で、情報交換もしやすい環境が整っています。

まとめ

  • dbt = データの変換レシピをコードで管理する仕組み
  • 「あの人しかわからない」問題を根本から解決する
  • dbt Projects on Snowflakeで、Snowflake内でdbtが完結する時代に
  • DWHの選択に関わらず、dbtは導入する価値がある
  • 次の記事では、BigQueryとSnowflakeを両方触った感想を書いてみます