dbt Fusionのすすめ

ogp

この記事はenechain Advent Calendar 2025の2日目の記事です。

はじめに

enechainのデータプラットフォームデスクでエンジニアをしているakizhouです。

弊社では今年からdbt Platform(旧dbt Cloud)を導入しました。今回は、dbt Labsから今年リリースされた次世代エンジン「dbt Fusion」について、実際に触ってみた所感を共有します。dbt Platform導入の経緯や実運用についてはまた別の機会に書ければと思います。

dbt Fusionとは

dbt Fusionは、より快適な開発体験とコスト効率を実現する次世代dbtエンジンです。

dbt Coreとの主な違いは以下の通りです。

項目 dbt Core dbt Fusion
実装言語 Python Rust
SQLの扱い テキストとしてテンプレート処理 セマンティクスを理解
バリデーション Compile時 Parse時(より早期に検出)
カラムリネージ なし ネイティブサポート
スレッド管理 threads設定を厳密に適用 ウェアハウスに応じて動的に最適化

dbt CoreはSQLファイルをJinjaの変数展開後、そのままデータウェアハウスへ渡します。一方FusionはSQLの構文木を構築し、テーブル間の依存関係やカラムの型情報を把握した上で処理します。これによりカラムレベルのリネージやリアルタイムのエラー検出が可能になっています。

また、dbt Coreはthreads設定の値をそのまま並列実行数の上限として使用しますが、Fusionはスレッド管理の挙動が異なります。執筆時点では定量的に検証できていませんが、公式ドキュメントではBigQueryなどのウェアハウスではthreads設定を厳密な上限ではなくガイダンスとして扱い、ウェアハウスの特性に応じて動的に最適化すると明言されています。

Fusionは既存のdbtプロジェクトとの互換性も考慮されており、dbt_project.ymlやSQLファイルの構造、dbt runなどのコマンドはそのまま使えます。 そのほかライセンスや互換性の詳細については解説しているブログ記事がすでに多数あるため、ここでは割愛します。

dbt PlatformでのFusion対応状況

執筆時点(2025年11月)では、dbt PlatformでのFusion利用はPrivate Previewの段階です。

サポートへ問い合わせたところ、Fusionによるビルドで問題がなく機能制約にかからないアカウントを「Fusion適合」として優先的に案内しているとのことでした。

弊社のアカウントでは、Governed ModelsやRetry Command、Advanced CIを利用しているプロジェクトがあります。一部でFusion利用時にエラーが出る可能性を指摘されており、現時点ではFusion適合アカウントとして選出されていません。

一方で、Fusionはlocal環境のCLIやVS Codeでも利用できるため、各プロジェクトがFusionによる実行でエラーや警告を発生しないようにしておくと、Fusionへの適合がより近づくとのアドバイスをいただきました。

Local環境でFusionを試す

dbt PlatformでのFusion有効化を待つ間も、local環境ではFusionを試すことができます。dbt Fusion CLIをインストールするか、VS Code拡張機能を使えばFusionの恩恵を受けながら開発できます。

余談ですが、dbt CoreではPythonパッケージ(local実行用)とdbt CLI(dbt Platform用)が分かれていました。FusionではRust化したこともあり、ここは統一されています。

良かった点

Local環境でカラムレベルのリネージが見られる

dbt Coreではカラムレベルのリネージはdbt PlatformのEnterprise機能としてのみ提供されており、local環境では確認できませんでした。Fusionでは、VS Code拡張機能上でモデルファイルを右クリック →「dbt: View Lineage」→「Show column lineage」でカラム単位の依存関係を確認できます。dbt Studioを開く必要もなく、localでカラムリネージを確認できるのは大きなメリットです。

カラムリネージ表示画面

リアルタイムエラー検出

SQLのエラーがエディタ上でリアルタイムに表示されます。従来はdbt compileを実行して初めてエラーに気づくことが多かったですが、Fusionでは書いている最中にエラーがハイライトされます。

データプレビュー

データウェアハウスから直接データをプレビューできます。BigQueryのコンソールを開かずにエディタ上で結果を確認できるのは地味ですが便利です。

気になった点

オートコンプリートはあまり試せていない

CursorのAI補完やAgentにコードを生成してもらうことが多いため、Fusion拡張機能のオートコンプリートはあまり試せていません。ただ、生成されたコードにエラーがあるかは先述の通りすぐ気づけるので、総合的な開発体験は良いです。

データプレビューのデフォルト行数が多い

データプレビューのデフォルトが1000行で、数行だけ確認したい時には多すぎると感じました。設定で行数を変更できますので、必要に応じて調整してください。

Fusionへの移行準備

既存プロジェクトをFusionに対応させるには、いくつかの準備が必要です。公式のFusion readinessページとアップグレードガイドを参考にまとめます。

やるべきこと

1. Latestリリーストラックへのアップグレード

dbt PlatformでFusion対応するには、すべてのジョブでLatestリリーストラックを使用する必要があります。

2. Deprecations(非推奨事項)の解消

dbt Coreで発生しているdeprecationsは、Fusionではエラーになります。dbt-autofixや、Studioのautofix機能を使うと、多くの問題を自動で修正できます。

3. dbtパッケージの見直し

dbt_utilsdbt_project_evaluatorなどdbt Labs管理パッケージはすでにFusion互換ですが、外部・コミュニティ製パッケージはサポート済みパッケージ一覧を確認してください。

4. サポート状況の確認

Supported featuresページで、利用している機能がFusionでサポートされているか確認してください。執筆時点での主な制約は以下の通りです。

項目 サポート状況
アダプター Snowflake、BigQuery、Databricks、Redshift
モデルタイプ SQLモデルのみ(Pythonモデルは未対応)
マテリアライゼーション view、table、incremental(標準戦略)
dbt docs generate サポート済み

互換性についての注意点

  • パースの厳密化: Fusionはパースがより厳密になっており、未定義のマクロや存在しないテスト、重複するdocsブロックなど、Coreでは通っていたものがエラーになる場合があります
  • マニフェストの互換性: Fusionが生成するマニフェスト(v20)はdbt Coreでは読めません。--deferなどのstate-aware機能を使う場合は、すべての環境をFusionに揃える必要があります
  • 設定フラグの無効化: dbt Coreで挙動を変更するために使用していた一部のフラグがFusionでは無効になります。移行前に使用中のフラグの互換性を確認してください
  • インクリメンタルの制限: microbatch戦略など一部のインクリメンタル戦略は現状未対応です。標準戦略(append、delete+insert、merge)のみがサポートされています

なお、dbt Coreは引き続きApache 2.0ライセンスでメンテナンスされるため、Fusionへの移行は必須ではありません。

まとめ

dbt Fusionは、パフォーマンスと開発体験を改善する次世代エンジンです。dbt Platformではまだプライベートプレビューですが、将来的にはデフォルトエンジンになると思われます。

カラムリネージやリアルタイムエラー検出など開発体験の向上を考えると、deprecationsの解消など準備は早めに始めておくと良いかと思います。VS Code拡張機能はdbt PlatformでのFusion有効化を待たずに今すぐ試せますし、localでFusionを使うにはプロジェクトがFusion互換である必要があるため、試しながら移行準備も進められて一石二鳥です。興味があればぜひ触ってみてください。

また、2025年12月11日(木)に開催されるdbt Coalesce Tokyoにて登壇予定です。ご興味のある方はぜひご参加ください!

明日の記事はKeiya.Ohashiさんによる「役割が変化する中で変わること、変わらないこと〜PdMから事業責任者へのロールチェンジ〜」です。是非チェックしてみてください。


enechainではデータマネージャーを募集しています。この記事を読んで興味を持った方はぜひご応募ください! その他のポジションも含め、日本のエネルギー業界をテクノロジーで変革する仲間を募集しています。

tech.enechain.com herp.careers