どちらを使ってもモデリングの本質(ref・tests・macros・snapshots・docs・artifacts)は同じですが、運用とコラボレーションの体験は大きく異なります。
この記事では、安定した公式仕様に基づき、dbt Cloud と dbt Core の違いを試験で問われやすい観点に沿って解説し、現場での選定を素早く決めるためのチェックポイントを示します。
dbt Core はオープンソースの CLI 実行環境です。モデルをコンパイルし、アダプタ経由で DWH(Snowflake、BigQuery、Databricks、Redshift、Postgres など)に SQL を投げます。スケジューラや Web UI、RBAC は含みません。
dbt Cloud はマネージドの SaaS で、Web IDE、ジョブスケジューラ、実行ログ、通知、認証・権限、メタデータ可視化、PR チェックなどを提供します。どちらも実際の計算は DWH 側で行われ、SQL の挙動は同じです。
| 観点 | dbt Cloud | dbt Core | 実務メモ |
|---|---|---|---|
| 提供形態 | SaaS(ホスト型) | OSS CLI(セルフホスト) | Cloud は Web IDE/ジョブ内蔵、Core はローカル/コンテナ中心 |
| 実行場所 | Cloud のジョブワーカーが DWH に SQL 投入 | 任意の実行環境から DWH に SQL 投入 | どちらも計算は DWH 側で実行 |
| スケジューラ/実行管理 | 内蔵ジョブ・スケジューラ・通知・リトライ | 内蔵なし。Airflow/GitHub Actions/cron 等を利用 | 小規模は Cloud の方が立ち上げが速い |
| IDE/レビュー | Web IDE、PR プレビュー、デバッグ | ローカル IDE + git フロー | チーム規約とブランチ運用が重要 |
| 接続・資格情報 | UI で環境別に管理(Dev/Prod 等) | profiles.yml と環境変数で管理 | Secret 管理は Vault 等と組み合わせる |
| 認証/RBAC/監査 | SSO/SAML、RBAC、監査ログ(プラン依存) | 機能なし。周辺基盤で実装 | ガバナンス要件が強い場合は Cloud が楽 |
Core の接続定義(profiles.yml の例:Snowflake)
my_project:
target: dev
outputs:
dev:
type: snowflake
account: '{{ env_var('SNOWFLAKE_ACCOUNT') }}'
user: '{{ env_var('SNOWFLAKE_USER') }}'
password: '{{ env_var('SNOWFLAKE_PASSWORD') }}'
role: ANALYST
database: ANALYTICS
warehouse: TRANSFORMING
schema: dev_{{ env_var('USER') }}
threads: 8
client_session_keep_alive: trueCloud はジョブ定義とスケジューラを内蔵し、環境(Development/Deployment)単位で実行パラメータ、スケジュール、通知、リトライ、並列化を定義できます。PR ベースのチェックや、前回成果物に基づく差分実行(いわゆる Slim CI)も設定しやすいのが特徴です。
Core はスケジューラを持たないため、Airflow、Dagster、GitHub Actions、GitLab CI、Azure Pipelines、cron などを用います。state:modified+ と artifacts(manifest.json、run_results.json)を活用して差分実行を設計するのが定石です。
実行経路(Core パス)
実行経路(Cloud パス)
Core での Slim CI(GitHub Actions の最小例)
name: dbt Core CI
on:
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install dbt-snowflake
- name: Restore previous artifacts
run: |
mkdir -p ci_state
# 例: 前回の manifest.json をアーティファクトやストレージから取得して ci_state/ に配置
- run: dbt deps
- run: dbt build --select state:modified+ --state ci_state --profiles-dir . --target devCloud の Web IDE はブラウザから接続設定・ブランチ操作・モデル実行・ログ確認・ドキュメント閲覧まで一気通貫です。新規メンバーのオンボーディングが速く、レビューでの再現性も高いのが利点です。
Core はローカル IDE(VS Code など)と CLI を組み合わせます。自由度が高い一方、Python/依存パッケージ、DWH へのネットワーク、シークレット、データサンプルの扱いなど環境差異を吸収する運用設計が鍵になります。
ドキュメント生成とローカル閲覧(Core)
dbt docs generate --target dev
# ローカルで一時サーバ起動
dbt docs serve --port 8080Cloud は SSO/SAML、RBAC、サービストークン、監査ログなどのガバナンス機能を提供します(利用可否はプランに依存)。接続情報は環境ごとに分離して安全に管理できます。
Core ではこれらを周辺基盤で補います。シークレットは環境変数で渡し、管理はクラウドのシークレットマネージャや Vault を用いるのが一般的です。権限制御は DWH のロール設計とオーケストレータ側の実行権限で行います。
環境変数を用いた安全な接続(profiles.yml 抜粋)
outputs:
prod:
type: snowflake
account: '{{ env_var('SNOWFLAKE_ACCOUNT') }}'
user: '{{ env_var('SNOWFLAKE_USER') }}'
password: '{{ env_var('SNOWFLAKE_PASSWORD') }}'
role: '{{ env_var('SNOWFLAKE_ROLE', 'TRANSFORMER') }}'
database: '{{ env_var('SNOWFLAKE_DB') }}'
warehouse: '{{ env_var('SNOWFLAKE_WH') }}'
schema: analyticsCloud はサブスクリプション費用が発生する一方、スケジューラや IDE、ログ・通知、UI での管理の運用負担を大幅に削減できます。小〜中規模やガバナンス要件が強い組織では TCO が下がることが多いです。
Core はソフトウェア自体は無償ですが、スケジューリング、モニタリング、権限、ログ保全、ドキュメント公開、メタデータ可視化などを自前で設計・保守します。既存のプラットフォームが整っている組織や高度なカスタマイズが必要な場合に適します。
アダプタ導入とバージョン固定(例:Snowflake/Databricks)
pip install 'dbt-snowflake==1.8.*'
pip install 'dbt-databricks==1.8.*'
# 再現性のため requirements.txt / lock を活用Analytics Engineer 試験では、dbt のコア概念に加えて、運用・コラボレーションの観点で Cloud と Core の使い分けが設問化されやすいです。特に Slim CI、環境分離、権限、ドキュメント/Lineage、スケジューリングの所在を即答できると得点に結びつきます。
現場の選定は要件ドリブンで決めます。RBAC/SSO・監査・スケジューラ内蔵・最短立ち上げが重視なら Cloud。既存オーケストレータ統合・細かな依存制御・インフラ標準の徹底が重視なら Core。いずれも artifacts と state 管理の設計が成功の鍵です。
選定チェックリスト(抜粋)
[ ] SSO/RBAC/監査が必須 → はい: Cloud 有力 / いいえ: Core も候補
[ ] 既存の統合オーケストレータに統合したい → はい: Core / いいえ: Cloud で内製省力
[ ] PR ごとの差分実行が必要 → 双方可(state 管理の容易さで比較)
[ ] ドキュメント/Lineage をすぐ可視化したい → Cloud 有利 / Core は自前ホスティング
[ ] 予算と運用体制 → TCO で試算(人件費+SaaS+DWH)Analytics Engineer
問題 1
組織は数名のデータチームで、短期間で本番スケジュール実行と Lineage/ドキュメントの可視化を整えたい。全社 SSO によるアクセス制御と実行ログの一元管理も要件で、専任のプラットフォーム運用者はいない。最も適切な選択はどれか。
正解: A
要件はスケジューリング、SSO/RBAC、ログ可視化、Lineage/ドキュメントの迅速な提供。これらは dbt Cloud がマネージドに提供する領域で、少人数・短期間の立ち上げに最適。Core でも実現可能だが、周辺の設計・運用コストが高くなる。
dbt Cloud と dbt Core は成果物の互換性がありますか?
あります。どちらも同じプロジェクト構造・アダプタ・アーティファクト仕様(manifest.json など)を用います。Cloud で生成した artifacts を Core の CI に流用したり、その逆も可能です。
Core でも Slim CI(差分実行)はできますか?
できます。dbt build --select state:modified+ と --state に前回の artifacts へのパスを指定します。Cloud は UI/設定で整備されており容易、Core は artifacts の保管・取得(ストレージや CI のアーティファクト)を自前で設計します。
Cloud と Core を併用できますか?
可能です。ソースオブトゥルースは Git で、Cloud のジョブ運用と Core のローカル開発/一部 CI を組み合わせられます。並行実行や接続先が衝突しないよう、環境分離とロック/実行ウィンドウの設計に注意してください。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
dbt Model の基礎: SQL で定義する変換の最小単位
Analytics Engineer 向けに、dbt Model の定義、マテリアライゼーション、依存関係、インクリメン...
dbt Analytics Engineer 試験ガイド: 出題範囲・配点・申込の実務視点
dbt Analytics Engineer 認定の出題範囲、配点の考え方、申込から受験までの流れを、公式ドキュメントの...
dbt Cloud と dbt Core の違いと選び方:Analytics Engineer 試験に効く要点
dbt Cloud と dbt Core の機能差を、実務と資格対策の両面から整理。スケジューリング、IDE、RBAC、...
dbt プロジェクト構造ガイド: models / seeds / macros の実務レイアウト
Analytics Engineer 向けに、dbt プロジェクトのディレクトリ構造と命名規約、dbt_project....
dbt_project.yml の読み方:主要設定と命名を最短で掴む
dbt_project.yml の必須キー、命名解決(database.schema.identifier)、設定優先度...