[新機能] dbt Projects on Snowflakeのアップデートでdbt Fusionがサポートされたので周辺機能と合わせて試してみた

[新機能] dbt Projects on Snowflakeのアップデートでdbt Fusionがサポートされたので周辺機能と合わせて試してみた

2026.05.20

かわばたです。

2026年5月19日にdbt Projects on Snowflake updatesとして、dbt Projects on Snowflakeに対する大規模なアップデートがリリースされました。
dbt Fusionエンジンの導入、カラムレベルの系統追跡、マルチバージョンサポート、Cortex Codeとの統合など、多岐にわたる機能強化が含まれています。

本記事ではすべての機能を実際に検証していきます。

【公式ドキュメント】
dbt Projects on Snowflake updates(リリースノート)
https://docs.snowflake.com/en/release-notes/2026/other/2026-05-19-dbt-projects-on-snowflake-updates

Manage dbt projects on Snowflake
https://docs.snowflake.com/en/user-guide/data-engineering/dbt-projects-on-snowflake-manage

dbt Core versions for dbt projects on Snowflake
https://docs.snowflake.com/en/user-guide/data-engineering/dbt-projects-on-snowflake-dbt-core-versions

Cortex Code in Snowsight
https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-snowsight

SYSTEM$GET_DBT_LOG
https://docs.snowflake.com/en/sql-reference/functions/system_get_dbt_log

なお、本記事ではSnowflake上のDBT PROJECTオブジェクトを指す場合に「dbt project object」と表記し、一般的なdbtのプロジェクト構成を指す場合に「dbtプロジェクト」と表記します。

対象読者

  • dbt Projects on Snowflakeを利用中・検討中の方
  • dbt Fusionへの移行を検討している方
  • Snowflake上でのdbt開発効率化に興味がある方

検証環境

  • SnowflakeトライアルアカウントEnterprise版

サンプルデータは下記を使用しています。

https://github.com/dbt-labs/jaffle-shop

今回のアップデート概要

今回のリリースでは以下の8つの機能強化が含まれています。

# 機能 概要
1 dbt Fusionエンジン Rustで完全に書き直された新エンジン。コンパイル時間の大幅な高速化
2 マルチバージョンdbtサポート DBT_VERSIONパラメータでプロジェクトごとにバージョンを固定可能
3 強化されたdbt DAGとカラムレベルの系統追跡 DAG可視化の改善、カラムレベルの系統追跡が可能に
4 DAGからの部分的dbtプロジェクト実行 モデルノードから対象を選択して部分的に実行
5 Workspacesでの単一dbtファイル実行 エディタ内の個別モデルファイルに実行ボタンを搭載
6 dbt project objectをWorkspaceにインポート デプロイ済みdbt project objectをWorkspaceにインポートして編集可能
7 Cortex Codeのdbtサポート AIアシスタントがdbtライフサイクル全体を支援
8 SYSTEM$GET_DBT_LOG関数の拡張 新しいmax_num_lines引数の追加

実際に試してみた

dbt Fusionエンジン

dbt Fusionとは

dbt Fusion 2.0.0-preview は dbt ランタイムの Rust による完全な書き直しで、パースとコンパイル時間の大幅な高速化を実現するよう設計されています。

従来のdbt CoreはPythonベースでしたが、dbt FusionはRustで一から書き直されたエンジンです。プロジェクトの規模が大きくなるにつれてコンパイル時間が課題になっていましたが、Fusionエンジンによってこの問題が解消されることが期待されます。

重要なポイントとして、Snowflake上のサポート対象バージョンとしてはdbt Fusion 2.0.0-previewがActive supportとして提供されています。「preview」の表記はdbt Labs社のバージョニング慣例によるもので、Snowflakeにおけるリリース状態を示すものではありません。SnowflakeのDBT_VERSIONとしては2.0.0-previewを指定します。また、追加ライセンスや購読は不要で、全ユーザーが利用可能です。

dbt Fusionの有効化

プロジェクト作成時にdbt Fusionを指定する場合は、DBT_VERSIONパラメータを設定します。

-- dbt Fusionバージョンを指定してプロジェクトを作成
CREATE DBT PROJECT my_project
  FROM '@my_stage/path/to/dbt_project'
  DBT_VERSION = '2.0.0-preview';

既存プロジェクトのバージョンを変更する場合はALTERを使用します。

-- 既存プロジェクトをdbt Fusionに変更
ALTER DBT PROJECT my_project SET DBT_VERSION = '2.0.0-preview';

2026-05-20_12h31_14

dbt Core から dbt Fusion への移行

移行にあたっては以下の3つのリソースが提供されています。

dbt-autofix ツール

ローカルターミナルで以下のコマンドを実行することで、dbt Coreの非推奨警告を自動的に解決し、パッケージの互換性を確認できます。インストール不要で使えます。

uvx dbt-autofix

公式アップグレードガイド

dbt Developer Hubの「Upgrading to the dbt Fusion engine」ガイドで、完全な移行プロセスが解説されています。

https://docs.getdbt.com/docs/dbt-versions/core-upgrade/upgrading-to-fusion?version=2.0

AI支援による移行

Cortex Codeなどのコーディングエージェントで利用できる「dbt Core to Fusion migration skill」が提供されています。AIの支援を受けながら移行作業を進めることができます。

dbt Fusionでの実行

実際にdbt Fusionエンジンでプロジェクトを実行してみます。

-- プロジェクトの実行
EXECUTE DBT PROJECT my_project
  ARGS = 'run'
;

2026-05-20_19h14_07

マルチバージョンdbtサポート

今回のアップデートで、プロジェクトごとにdbtバージョンを固定できるようになりました。

サポート対象バージョン

バージョン サポート状態 dbt Labs側のサポート
dbt Fusion 2.0.0-preview アクティブ アクティブ
dbt Core 1.10.15 アクティブ 2026年6月15日まで重要な修正のみ
dbt Core 1.9.4 アクティブ 廃止予定

サポート対象dbtバージョンの確認

現在サポートされているdbt CoreバージョンはSYSTEM$SUPPORTED_DBT_VERSIONS()で確認できます。

SELECT SYSTEM$SUPPORTED_DBT_VERSIONS();

2026-05-20_19h19_20

アカウントレベルのデフォルト設定

アカウント管理者はDEFAULT_DBT_VERSIONパラメータで、今後作成されるdbt project objectのデフォルトバージョンを設定できます。このデフォルトはWorkspacesの初期dbt runtime versionにも使用されます。個別のdbt project objectでは、作成時・ALTER DBT PROJECTEXECUTE DBT PROJECT ... DBT_VERSIONにより上書きできます。

-- アカウントレベルでデフォルトバージョンを設定
ALTER ACCOUNT SET DEFAULT_DBT_VERSION = '2.0.0-preview';

2026-05-20_19h24_54

Workspacesの初期dbt runtime versionも下記のように確認できました。
2026-05-20_19h29_46

実行時のバージョン一時上書き

なお、DBT_VERSIONはdbt project objectに固定するだけでなく、EXECUTE DBT PROJECT実行時に一時的に上書きすることもできます。移行検証では、既存設定を変更せずに特定の実行だけFusionで試せるため便利です。

-- この実行だけ dbt Fusion を使用する
EXECUTE DBT PROJECT my_project
  ARGS = 'run'
  DBT_VERSION = '2.0.0-preview';

強化されたdbt DAGとカラムレベルの系統追跡

DAG(有向非巡回グラフ)の可視化が大幅に改善されました。

DAGの改善点

  • モデル表示上限: 100から300に増加
  • 検索バー: DAG内でモデル名を検索可能に
  • 深さコントロール: 上流・下流を何階層まで表示するか制御可能
  • 統合サイドパネル: 行数、カラム数、compiled SQL、実行時情報などを確認可能
  • カラム表示: 各モデルノードにカラムリストを表示(Snowflake Horizon Catalogと連携)
  • 対応画面の拡大: Workspaces、dbt project object、Query Historyで利用可能

カラムレベルの系統追跡

モデルノードで「Show columns」を選択すると、カラムリストが展開されます。特定のカラムを選択すると、そのカラムを使用するすべての上流・下流モデルがハイライト表示されます。

2026-05-20_19h38_10

アクセス方法

Snowsightから「Databases > your database > your schema > dbt Projects」でプロジェクトを選択し、プロジェクト詳細ページのDAGタブで確認できます。

実際に試してみた

SnowsightからプロジェクトのDAGタブを開いてDAGを確認してみます。

「Databases > your database > your schema > dbt Projects」からプロジェクトを選択し、DAGタブを開きます。

モデル表示上限が300に増加しており、検索バーからモデル名で検索できるようになっています。

2026-05-20_19h50_23

次に、カラムレベルの系統追跡を試してみます。モデルノードで「Show columns」を選択すると、カラムリストが展開されます。

特定のカラムを選択すると、そのカラムを使用するすべての上流・下流モデルがハイライト表示されました。

2026-05-20_19h51_48

また、Query Historyの画面でもDAG可視化が強化されています。
下記のように実行箇所およびステータスの確認が可能です。
2026-05-20_20h38_36

データの流れをカラム単位で追跡できるのは、影響分析やデバッグの際に非常に有用だと感じました。Snowflake Horizon Catalogとの連携により、カタログに登録されたカラム情報が自動的に反映される点も便利です。

DAGからの部分的dbtプロジェクト実行

DAG上のモデルノードのメニューから、対象を選択して部分的に実行できるようになりました。

メニューオプション 実行内容 dbtフラグ相当
Execute model 選択モデルのみ --select model_name
Execute model+ モデルと下流依存関係 --select model_name+
Execute +model モデルと上流親関係 --select +model_name
Execute +model+ 親・モデル・子全体 --select +model_name+

実行ダイアログでは操作種類(Run/Test/Build)とプロファイルターゲットを選択できます。

実際に試してみた

DAG上のモデルノードのメニューを開いてみます。

2026-05-20_19h53_36

「Execute model+」を選択すると、対象モデルとその下流の依存関係も含めて実行されます。

実行ダイアログでは操作種類(Run/Test/Build)とプロファイルターゲットを選択できます。

2026-05-20_19h54_44

2026-05-20_19h56_13

DAGからの直感的な操作で部分実行ができるため、特定モデルのみのテスト実行や、影響範囲を限定した再実行が容易になりました。従来はCLIで--selectフラグを手動で指定する必要がありましたが、GUI上で視覚的に選択できるのはありがたいアップデートです。

Workspacesでの単一dbtファイル実行

Workspacesのエディタ内で、個別のモデルファイルに実行ボタンが搭載されました。プロジェクト全体を実行せずに、そのモデルだけを実行またはビルドできます。

開発中の迅速なフィードバックループが実現でき、効率的な開発が可能になります。

実際に試してみた

Workspacesでdbtプロジェクトを開き、個別のモデルファイルを選択してみます。エディタの上部に実行ボタンが表示されています。

実行ボタンをクリックすると、そのモデルのみがビルドされます。

2026-05-20_20h04_41

下記コマンドが実行されていました。
2026-05-20_20h09_01

プロジェクト全体を実行せずに個別モデルだけを素早く実行できるため、開発や改修時に役立つ機能だと感じました。

dbt project objectをWorkspaceにインポート

デプロイ済みのdbt project objectの内容を、Workspace内に新規フォルダとしてインポートできるようになりました。インポート後はWorkspace上で編集・反復作業が可能です。

本番環境にデプロイされているdbt project objectの内容を確認・修正したい場合に便利な機能です。

実際に試してみた

Workspacesを開き、デプロイ済みのdbt project objectをインポートしてみます。

2026-05-20_20h16_45

2026-05-20_20h17_31

インポートが完了すると、プロジェクトの内容がWorkspace内に新規フォルダとして展開されます。

2026-05-20_20h18_01

インポート後はWorkspace上でファイルを直接編集できます。デプロイ済みdbt project objectの構成を確認したり、修正を加えて再デプロイするワークフローがシームレスに行えるようになりました。

Cortex Codeのdbtサポート

Cortex CodeがWorkspacesおよびコマンドラインインターフェースでdbtライフサイクル全体に対応しました。

対応機能

  • モデルの雛形生成
  • テストの追加
  • dbtコマンドの実行
  • ドキュメントの自動生成
  • デプロイ済みdbt project objectのファイル検査による探索とデバッグ

実際に試してみた

Snowsightの右下にあるCortex Codeアイコンを選択して、dbtに関する質問をしてみます。

テストの追加を依頼してみます。

customers.sqlに対してymlファイルで適切なテストを作成してください

2026-05-20_20h27_22

作成されたymlファイル

version: 2

models:
  - name: customers
    description: Customer dimensions with lifetime order summary metrics, one row per customer.
    columns:
      - name: customer_id
        description: The unique key for each customer.
        data_tests:
          - not_null
          - unique
      - name: count_lifetime_orders
        description: Total number of distinct orders placed by the customer.
        data_tests:
          - not_null
      - name: first_order_date
        description: Date of the customer's first order.
      - name: last_order_date
        description: Date of the customer's most recent order.
      - name: lifetime_spend_pretax
        description: Sum of all order subtotals before tax.
      - name: lifetime_tax_paid
        description: Sum of all tax paid across orders.
      - name: lifetime_spend
        description: Sum of all order totals including tax.
      - name: customer_type
        description: Whether the customer is new or returning.
        data_tests:
          - not_null
          - accepted_values:
              arguments:
                values: ['new', 'returning']

今回の検証では、Cortex Codeを使ってdbtモデルに対するテスト定義の生成を試せることを確認できました。公式ドキュメント上は、モデル作成、テスト追加、dbtコマンド実行、ドキュメント生成など、dbtライフサイクル全体の支援に対応しています。

SYSTEM$GET_DBT_LOG関数の拡張

dbtプロジェクト実行のログを取得するSYSTEM$GET_DBT_LOG関数に、新しいmax_num_linesオプション引数が追加されました。

**構文

SYSTEM$GET_DBT_LOG ( '<query_id>' [ , <max_num_lines> ] )
パラメータ 必須 説明
query_id はい ログを取得したい実行のクエリID
max_num_lines いいえ dbt.logファイルの末尾から返す最大行数。デフォルトは1,000行

使用例

DBT_PROJECT_EXECUTION_HISTORY関数と併用して、最新の実行ログを取得できます。

-- 最新の実行IDを取得
SELECT query_id
FROM TABLE(SNOWFLAKE.INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY(
  DATABASE => 'MYDB',
  SCHEMA => 'MYSCHEMA',
  OBJECT_NAME => 'MY_PROJECT'
))
ORDER BY query_end_time DESC
LIMIT 1;

-- ログを取得(最新500行)
SELECT SYSTEM$GET_DBT_LOG('<上記のquery_id>', 500);

2026-05-20_20h31_15

max_num_linesを指定することで、必要な分量だけログを取得できるため、大規模プロジェクトでのデバッグ時にログの確認が効率的になります。

最後に

今回のアップデートは「dbt Projects on Snowflake」にとって非常に大きなリリースだと感じました。全8機能を実際に検証してみて、それぞれの改善点を実感できました。
特にカラムレベルのリネージやDAGからの部分的dbtプロジェクト実行はWorkspace上で確認しながら開発・改修が出来るためとてもありがたい機能だと感じました。

この記事が何かの参考になれば幸いです!


Snowflakeの導入支援はクラスメソッドに!

クラスメソッドでは Snowflake の導入を支援しております。
製品の詳細や支援の内容についてお気軽にお問い合わせください。

Snowflakeの詳細を見る

この記事をシェアする

関連記事