🗒️

複雑化するdbtの各種CLIやエンジンの用語まとめ

に公開

dbt Advent Calendar 2025の2日目にSeries 1の3日目が空いていることに気がついたので、急遽救うことにしました!
https://qiita.com/advent-calendar/2025/dbt

2025年にdbt Labsのソリューションアーキテクトとして入社し、APACソリューションアーキテクトチームの一人目のJapan担当として参画しました。主にthe dbt platformを触る日々が始まりました。

しかし、初めてdbt platform の世界に入ると、「CLI的なもの」の種類が多すぎて混乱しませんか?
特に2025年からはFusionも登場し、さらにややこしい状況になっています。

それぞれが文脈によって、CLIツールを指したり、内包するエンジンを指したり、あるいはインストール形態を指したりします。正しく理解して使い分けるのはかなり難しいですが、自分の短いdbt歴を駆使して、理解を整理したいと思います。

この記事では、以下の5つの用語・概念について整理し、その違いを解説します。

  1. dbt Core
  2. dbt CLI
  3. dbt commands in the dbt platform
  4. Fusion CLI
  5. Fusion in the dbt platform

結論

この表を見てください。

用語 概要 実行環境 エンジン ライセンス
dbt Core 従来のOSS版dbt ローカルやself-hosted環境 dbt Core
ベース
Open-source (Apache 2)
dbt CLI dbt platformのDEV環境用CLI ローカルでコマンド実行し、dbt platformのDEV環境で処理される dbt Core
ベース
利用にはdbt platformの契約が必要
dbt commands
in the dbt platform
dbt jobsやIDEで使用するdbtコマンド dbt platformのPRODやDEV環境 dbt Coreベース(広義的にはFusionも含む) 利用にはdbt platformの契約が必要
Fusion CLI 次世代のdbt Fusion engineのローカル環境CLI ローカルやself-hosted環境 dbt Fusion engine
ベース
Source-available (ELv2)、open-source (Apache 2)、proprietary componentsの混合
Fusion
in the dbt platform
dbt platform上のFusion実行環境 dbt platform dbt Fusion engine
ベース
利用にはdbt platformの契約が必要

dbt Core

2016年からTristan Handyによって開発が始められた従来のOSS版dbtのエンジンのことで、「ソフトウェアエンジニアリングのベストプラクティスをデータ開発に持ち込む」というフレームワークや思想が詰まっている土台とも言えます。ローカル端末やサーバ、dockerコンテナなどの環境でCLIとして実行できるため、従来は「self-hosted」なdbtを指す際にも使われていました。

私のようにdbt platformから入ったユーザーの場合、基本的には直接利用することはありません。
また、2025年からは文脈によっては「Fusionではないほうのエンジン」を便宜的に指す言葉として使われるケースもあります。

1年間に数回minorリリースされ、2025.12.03時点ではv1.11が最新です。

https://docs.getdbt.com/docs/core/installation-overview

dbt CLI

旧称「dbt Cloud CLI」です。dbt Cloud が the dbt platform[1] に改名されたせいで、さらに何のことかよく分からない「dbt CLI」へと名称変更されました。

動作的にもこれが一番分かりづらく、初見の方が利用シーンを勘違いしやすいCLIです。
dbt CLIはローカル環境にインストールしてコマンドを実行しますが、実際にdbtのエンジンが動くのはCloud側(dbt platform)のDEV環境 です。

初見で以下の公式ドキュメントにあるアーキテクチャ図を見ると、「ああ、これはCloud側でかつDEV環境専用なのね。」と一瞬で分かるわけがありません。

あくまで dbt platform 側で実行されるため、defer機能(DEV環境にないモデルはPROD環境を参照する機能)や dbt Mesh など、dbt platform独自の機能も利用できます。

「dbt CLIを使ってPROD環境を実行したい」という質問をたまに耳にしますが、PROD環境やSTG環境は、dbt jobs(dbt platform上のジョブオーケストレーションサービス)を設定して実行する必要があります。これには、本番環境への操作におけるガバナンスを担保する目的もあります。

dbt-cloud-cli という紛らわしい存在

さらにややこしいことに、名前が似ている dbt-cloud-cli (https://github.com/data-mie/dbt-cloud-cli) というライブラリが存在します。
これは dbt platform のAPIをCLIで操作するための3rd-party製ツールです。コミッターにdbt Labsのサポートチームや開発チームの顔ぶれがいるため、dbt Labsで公式サポートされそうですが、dbt Labsの製品ではないので、サポートされません。

https://docs.getdbt.com/docs/cloud/cloud-cli-installation

dbt commands in the dbt platform

dbt platform上のdbt JobsやStudio IDEのコマンドラインで実行する際に呼ばれるdbtのコマンドを指します。
明確な公式名称があるわけではないのですが、ドキュメントを漁った結果、dbt commands自体はローカル環境のdbt Core等でも実行できるため、こう呼ぶのが実態に一番近そうだと判断しました。

dbt platformのdbt commandsは、基本的に versionless の戦略を取っており、以下の3つのみ選択可能です。

  • Latest
  • Compatible (Latestの1ヶ月前のバージョン)
  • Extended (Compatibleの1ヶ月前のバージョン)

どれを選んでも自動的にバージョンアップされますが、組織の許容度(いきなり最新バージョンを採用してよいか)に応じて選択します。
中身はPythonベースのdbt Coreを元にしていますが、実行ログには "dbt_version": "2025.6.10+1d2ba03" のように表示され、どのdbt Coreバージョンに相当するかはパッと見では分かりません(基本はその時点での最新のdbt Coreに相当します)。前述のとおりdbt Coreとは異なる体系でリリースされています。

https://docs.getdbt.com/docs/deploy/job-commands

Fusion CLI

Fusionは2025年5月に公開された、Rustベースで開発されたdbtのコードを高速に実行するソフトウェアのことです。
dbt Fusion engineというエンジンを持ち、Fusionは文脈によってはローカル環境のCLI(Fusion CLI)自体を指すこともあります。[2] ここは、dbt platform側のFusionと区別するために、ローカルにインストールするFusionに対して、Fusion CLIという見出しにしています。

Fusionの概要は以下のとおりです。[3]

  • 高度なSQL解析能力
    • 複数のDWHのSQL構文を理解可能(IDEがSQLを一般的な開発言語のように扱えるようになった)
    • 文法チェック、テーブルやカラム存在チェック、関数の引数の型チェックなど
  • 開発体験の向上
    • SQL文のCTEブロック単位でのデータプレビュー
    • カラムレベルのリネージ表示
  • 実行が必要なモデルのみを実行するオーケストレーター
    • dbt platformと連携し、以前のジョブ実行コンテキストを持って実行不要なモデルを判断可能(State-aware orchestration

https://docs.getdbt.com/docs/fusion/about-fusion
https://docs.getdbt.com/docs/fusion/install-fusion

Fusion in the dbt platform

dbt platform側で使用されるdbt Fusion engineのことを社内でこのように呼ばれることがあります。
「dbt commands in the dbt platform」のFusion版とも言えます。Studio IDEや dbt jobsをdbt Fusion engineで実行する仕組みを指します。

State-aware orchestration(PROD環境)の利用やStudio IDE(DEV環境)でのFusionによる開発者体験の向上をするために必要なサービスです。

執筆時点では、private preview状態で、Fusionに適合[4]しているdbtアカウントのユーザに選択的に案内しています。
有効化されるとenvironmentのdbt versionの設定で、Latestとは別に、Fusion latestが選択可能になります。

https://docs.getdbt.com/docs/dbt-versions/upgrade-dbt-version-in-cloud#dbt-fusion-engine-


おわりに

dbtとdbt platformの進化に伴い、実行環境やエンジンの選択肢が増えましたが、それぞれの役割を理解することで適切な構成を選択できるようになります。この記事がそれぞれの登場人物への理解の助けになると幸いです。

脚注
  1. かつての「dbt Cloud」は、多くのWebサービス同様に2単語で固有名詞扱いでしたが、「dbt platform」になってからは一般名詞化されています。そのため、"the" をつけないと特定のプラットフォームを指す言葉になりません。
    The dbt platformは、dbt CoreもFusionも実行できるdbtの統合プラットフォームです。この名称変更のせいで、dbt Labs社内外の文書問わず"dbt Platform"という誤記をたくさん見かけます。
    今のところ、dbt Developer Hub などの公式ドキュメントでは、theを省略するケースはあるものの、誤記が見当たらないため、テクニカルライターチームの目が行き届いているようです。 ↩︎

  2. 記事を書きながら気づきましたが、「dbt Fusion」という製品名は公式ドキュメントにはなく、「Fusion」単体か、そのエンジンを指す「dbt Fusion engine」という用語が使われています) ↩︎

  3. 詳細については、myshmehさんのスライド「これからのSQL開発 — dbt FUSION engineの本質とその先の世界」で詳しく解説されています。 ↩︎

  4. 全プロジェクトで現時点でFusionが非対応の機能を利用していなく、dbt commands in the dbt platformがLatestの状態で、depreciationのwarningログ等が出ていないなどの条件で判定しています。 ↩︎

Discussion