自分は普段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を両方触った感想を書いてみます