NTT DATA TECH
🌟

dbt Projects on Snowflake GAに伴うアップデートまとめ

に公開

はじめに

この記事は Snowflakers Advent Calendar 2025 の5日目です。

2025年11月6日に dbt Projects on Snowflake が GA されました。
リリースノート: Nov 06, 2025: dbt Projects on Snowflake (General availability) | Snowflake Documentation

dbt Projects on Snowflake は2025年6月の Snowflake Summit で発表され、大きな話題になったので、名前だけは聞いたことがある方も多いと思います。私も Public Preview の段階で触ってみたのですが、「ここまで Snowflake ネイティブに dbt を動かせるのか」とかなり感動しました。

一方で、当時はいくつか制限や気になるポイントがあり、「本番環境で導入するにはもう一歩」という印象だったのも正直なところです。

今回 GA にあたって、そうした気になっていた点がいくつも解消されたので、本記事では Public Preview から GA までの間に何が良くなったのか にフォーカスして紹介します。

なお、dbt Projects on Snowflake の概要や基本的な使い方については、以下のようにすでに多くの良記事が公開されていますので、そちらに譲ります。

1. 実行結果アップロードが 6分 → 40秒台に

Preview 中は dbt コマンド実行後の結果アップロードに 6〜6.5 分かかっていましたが、 GA では 約 40〜45 秒 と、8〜10 倍高速化しました。

Preview時に触った人なら、「dbt run 自体は終わっていそうなのにいつまでもログが生成されずに詳細の実行結果が確認できない…」というモヤモヤを経験したはずです。

この待ち時間が1回あたり6分も発生してしまうと、パイプライン全体の処理時間が延びてしまうため、CIや定時バッチで使うには少し懸念がありました。

GA ではこのアップロード処理が40秒台まで短縮されたことにより、

  • 開発中の「ちょっと直してすぐ流して結果を確認」が現実的なテンポになる
  • Task から呼び出すときも、パイプライン全体の SLA を組み立てやすい

という意味で、「PoC 止まり」から「本番運用にのせてもよさそう」なレベルに一段階上がったと言って良さそうです。

2. Workspaces で secondary role が不要に

Preview の頃、地味にハマりどころだったのが secondary role 前提の動きです。

Workspaces から dbt を実行する際に secondary role を要求されるため、普段 secondary role を無効にするという設計方針になっているアカウントだと、ロール設計を見直す必要がありました。

GA により Workspaces で dbt を使うのに secondary roles が不要になったため、secondary role を無効にするという設計方針の場合でも、そのまま Workspaces で dbt を動かせるようになりました。

ロール設計をやり直さずに済むので、既存アカウントへの導入ハードルがだいぶ下がります。

3. コマンド&デプロイまわりの「惜しい」がだいぶ解消

3-1. dbt コマンドのカバー範囲が拡大

GA では、サポートされる dbt コマンド・フラグが増えています。

  • dbt docs generate がサポートされた
  • dbt retry がサポートされた
  • dbt compile で使えるフラグが追加された

Preview のころは Snowflake ネイティブ環境では使えないコマンドが多かったため、一部コマンドは手元や CI で実行する必要があり、運用系のスクリプトを素直に移植できない場面がありました。

  • 失敗ジョブのリトライを dbt retry で書いていた人
  • Catalog / docs を Snowflake からまとめて吐きたい人

にとっては、運用に必要な機能は十分揃ってきたと言えます。

このあたりの機能は今後も拡張されていくと考えられるので、「dbt Core でできることは全て dbt Projects on Snowflake で実現できる」という状態に近づいていくのではないかと思います。

3-2. 「compile on create」と「deps 自動インストール」

GA 直前の 2025/10/9 のアップデートでは、デプロイ周りの運用作業が効率化できるようになりました。
リリースノート: Oct 09, 2025: dbt Projects on Snowflake: Recent improvements (Preview) | Snowflake Documentation

Compile on create

  • DBT PROJECT オブジェクトを作成 or 更新したタイミングで 自動コンパイル
  • Snowsight 側での表示や DAG も常に最新のビルド生成物に追従

これにより、Preview 時代にありがちだった「デプロイは通ったけど、実際に run したらコンパイルエラーで落ちた」という“タイムラグ付きのコンパイルエラー”が、デプロイ時にちゃんと表面化するようになりました。

Install deps on compile

デプロイ時に dbt deps を同時に走らせられるオプションが追加され、EXTERNAL_ACCESS_INTEGRATIONS を指定しておけば、dbt_packages を同梱しなくても依存パッケージを取得してくれるようになりました。

Preview の頃は、dbt_packages をステージに含めるか、自前で deps を解決してからアップロードする必要があり、「CI で deps → 関連する生成物を Snowflake に持ち込む」という一手間が必要でした。

本アップデートにより外部パッケージを利用する dbt Project における運用工数が大きく削減します。

4. 失敗とログの扱いが “Snowflake らしい” 形に揃った

4-1. dbt の失敗がクエリ失敗として扱われる

2025/10/9 のアップデートで、dbt のエラーが Snowflake 上の「クエリ失敗」として扱われるようになりました。

Preview時はdbt runが失敗してもクエリとしては成功と表示されたため、dbt のエラーを正しくキャッチすることが困難でした。
Taskで実装している場合はTask定義内でdbt runの結果を受け取りエラーを発報したり、イベントテーブルのログを使ってアラートを飛ばしたりするなどの処理を実装する必要がありました。

本アップデートでは dbt の成功/失敗がそのままクエリやTaskの成功/失敗に反映されるようになったので、上記のような特別なハンドリングがいらなくなりました。

これは個人的にはかなり嬉しいアップデートだと感じています。

4-2. SYSTEM関数で生成物とログに直アクセス

同様に2025/10/9 のアップデートでは以下のようなSYSTEM関数が追加され、dbtの生成物とログへのアクセスが簡単になりました。

  • SYSTEM$LOCATE_DBT_ARTIFACTS(<query_id>)
    → その実行の生成物(コンパイル後のSQL等)が置かれているステージのパスを返す
  • SYSTEM$LOCATE_DBT_ARCHIVE(<query_id>)
    → dbt Projectのアウトプットがまとめられた zip アーカイブの場所を返す
  • SYSTEM$GET_DBT_LOG(<query_id>)
    dbt.log の末尾 1000 行を返す(フルログは zip 側を参照)

以前は実行結果のログへアクセスするために EXECUTE DBT PROJECT の出力結果をもとに OUTPUT_ARCHIVE_URL を解釈したり、どこに何が保存されているのかをドキュメントと照らし合わせながら手探りする必要がありました。

今は、

  1. Query History で対象クエリ(= dbt 実行)を特定し
  2. latest_query_id() や実際の QUERY_ID を使って SYSTEM$ ファンクションを叩く
  3. SnowSQL や Snowflake CLI で GET する

という、Snowflake 標準の運用パターンに沿ったフローになっています。

4-3. MONITOR 権限で「見るだけロール」を作りやすくなった

加えて、dbt Projects on Snowflake に対して MONITOR 権限がサポートされました。

  • 実行履歴の閲覧
  • 各実行の生成物やログのダウンロード

などを、MONITOR 権限だけで許可できるようになっています。

これは、運用担当に「見るだけロール」を渡したいといった、現実的な運用設計と相性がよいアップデートだと言えます。

5. Snowsight の Project details で DAG からスケジュールまで完結

GA のタイミングでは、Snowsight の UI も少し本番運用寄りに進化しています。

  • Project details ページから、DAG(モデル・テストの依存関係)を閲覧できる
  • 同じ画面から、dbt Project の実行・スケジュール設定まで行える

これにより、

  • 普段 dbt CLI を叩かないアナリスト / PM / オペレーターでも「どのモデルがどれに依存しているか」を Snowsight で確認できる
  • 「このパイプラインを毎朝 9:00 に流したい」といった要求に対し、Snowsight 上で “dbt Task” 的なものを組んでしまえる

という、Snowflake だけ見ていれば運用できる度 が一段上がりました。

CLI ゴリゴリ派の人でも、

  • DAG をサクッとブラウザで確認したいとき
  • 非エンジニアに仕組みを説明するとき

にかなり便利な改善だと思います。

6. DBT PROJECT オブジェクト自体のレプリケーション対応

最後にもう一つ、エンタープライズ寄りのトピックです。

DBT PROJECT オブジェクトのレプリケーションが failover アカウント向けにサポートされました。

DR 用 / リージョン跨ぎのフェイルオーバー構成を組んでいる Snowflake アカウントでも DBT PROJECT オブジェクト自体を含めた形でレプリケーションができるようになりました。

これまではデータベースやテーブルはフェイルオーバーできるが、dbt Projects on Snowflake の構成だけは Git から再デプロイする必要がありましたが、
DBT PROJECT オブジェクト自体もレプリケーションできるようになったことで、Snowflake 上に閉じた DR ストーリーを描きやすくなりました。

まとめ:Preview で感じた「ちょっと惜しい」がかなり潰れた

ここまでをざっくりまとめると、Public Preview から GA までの間に、

  • 実行結果アップロードが 6 分 → 40 秒台になり、待ち時間とコストが現実的に
  • Workspaces での secondary role 前提がなくなり、ロール設計のハードルが低下
  • docs generate / retry / 追加 compile フラグ対応+compile on create / deps 自動インストールで、「普通の dbt 本番運用」にかなり近い構成が組める
  • クエリ失敗としてのエラー扱い、SYSTEM関数、MONITOR権限で、失敗検知とログ取得が Snowflake 標準フローに統合
  • Snowsight から DAG / 実行 / スケジューリングまで操作できる UI と、DBT PROJECT のレプリケーション対応で、運用と DR の絵が描きやすくなった

という変化がありました。

Preview を触った時点で、「処理完了が遅い」「エラーハンドリングの処理を作るのが面倒」「ログ取り出しがつらい」と感じて一度検討を先送りにしたチームほど、今もう一度触り直してみる価値があるタイミングだと思います。

仲間募集

NTTデータ ソリューション事業本部 では、以下の職種を募集しています。

Snowflake、生成AIを活用したデータ基盤構築/活用支援(Snowflake Data Superheroesとの協働)
Databricks、生成AIを活用したデータ基盤構築/活用支援(Databricks Championとの協働)
プロジェクトマネージャー(データ分析プラットフォームソリューションの企画~開発~導入/生成AI活用)
クラウドを活用したデータ分析プラットフォームの開発(ITアーキテクト/PM/クラウドエンジニア)

ソリューション紹介

Trusted Data Foundationについて

~データ資産を分析活用するための環境をオールインワンで提供するソリューション~
https://www.nttdata.com/jp/ja/lineup/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ(Datalake+DWH+AI/BI)を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

TDFⓇ-AM(Trusted Data Foundation - Analytics Managed Service)について

~データ活用基盤の段階的な拡張支援(Quick Start) と保守運用のマネジメント(Analytics Managed)をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス~
https://www.nttdata.com/jp/ja/lineup/tdf_am/
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

NTTデータとSnowflakeについて

NTTデータとSnowflakeについて
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。
NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。
https://www.nttdata.com/jp/ja/lineup/snowflake/

NTTデータとDatabricksについて

NTTデータは、お客様企業のデジタル変革・DXの成功に向けて、「databricks」のソリューションの提供に加え、情報活用戦略の立案から、AI技術の活用も含めたアナリティクス、分析基盤構築・運用、分析業務のアウトソースまで、ワンストップの支援を提供いたします。
https://www.nttdata.com/jp/ja/lineup/databricks/

NTT DATA TECH
NTT DATA TECH
設定によりコメント欄が無効化されています