には Core (OSS、Python パッケージ) と Cloud (、 IDE + スケジューラ + Slim CI 等) の 2 形態があります。本記事では選び方と、Core でのローカル動作セットアップを扱います。
判断早見表
| 観点 | dbt Core | dbt Cloud |
|---|---|---|
| 価格 | 無料 (, Apache 2.0) | Developer 1 名月 $100、Team / Enterprise は高くなる |
| IDE | VS Code 等で自前 | Web IDE 内蔵 |
| スケジューラ | / cron / Actions で自前 | ジョブスケジューラ内蔵 |
| GitHub Actions 等を組む | Slim CI 内蔵 (差分のみ実行) | |
| 権限管理 | の権限と 権限で運用 | RBAC 内蔵 |
| lineage 表示 | `dbt docs serve` をローカル/サーバで | Web で誰でも見える |
| learning curve | Python / Git に慣れたエンジニア向け | アナリスト向けに UI が優しい |
| 向く規模 | 小〜中規模、エンジニア中心 | 中〜大規模、複数チーム |
ふくふくのデフォルト選択
1〜3 人のスタートアップ → Core + GitHub Actions で十分。5 人超 + アナリスト混在 → Cloud Team を検討。100 人超 → Cloud Enterprise + dbt Mesh (EP.13)。
Core のセットアップ ( 例)
Python venv で dbt-bigquery をインストール
Bash
# 1) プロジェクトディレクトリmkdir analytics && cd analyticspython3 -m venv .venvsource .venv/bin/activate
# 2) 必要なアダプタだけ入れる (フル dbt-core はメタパッケージ)pip install dbt-bigquery==1.8.*
# 3) dbt プロジェクト初期化dbt init analytics# → 対話で profile name / DWH 接続情報を入力~/.dbt/profiles.yml (BigQuery 例)
YAML
analytics: target: dev # デフォルトターゲット outputs: dev: type: bigquery method: oauth # gcloud auth application-default login で済ませる project: my-gcp-project dataset: dbt_dev_yourname threads: 4 # 並列実行数 timeout_seconds: 300 location: asia-northeast1 priority: interactive prod: type: bigquery method: service-account keyfile: ~/.dbt/keys/prod-sa.json project: my-gcp-project-prod dataset: analytics_prod threads: 8接続テスト → 初回実行
Bash
dbt debug # 接続情報の確認dbt deps # packages.yml に書いた依存を取得dbt seed # seeds/ 以下の CSV を DWH にロードdbt run # models/ 以下の SQL を実行dbt test # tests を実行dbt docs generate # ドキュメント HTML を生成dbt docs serve # ブラウザで確認 (デフォルト localhost:8080)の場合の差分
profiles.yml (Snowflake 例)
YAML
analytics: target: dev outputs: dev: type: snowflake account: xy12345.ap-northeast-1.aws user: your_user authenticator: externalbrowser # SSO ならこれ role: ANALYST_ROLE database: ANALYTICS_DEV warehouse: BI_WH_DEV schema: dbt_dev_yourname threads: 8 client_session_keep_alive: falseディレクトリ構造(生成された雛形)
dbt init で作られる構造
Text
analytics/├── dbt_project.yml # プロジェクト設定├── packages.yml # 外部 dbt パッケージ├── profiles.yml # (通常は ~/.dbt/profiles.yml に置く)├── models/ # ★ メインの変換 SQL│ ├── staging/│ │ ├── stg_customers.sql│ │ └── schema.yml│ ├── intermediate/│ └── marts/├── seeds/ # 静的 CSV (国コードマスタ等)├── snapshots/ # SCD Type 2├── macros/ # Jinja マクロ├── tests/ # 高度なテスト (singular tests)├── analyses/ # アドホック分析クエリ (run されない)└── target/ # ビルド成果物 (Git ignore)1日目に必ず仕込むもの
- `.gitignore`: `target/` `dbt_packages/` `logs/` `.user.yml` を除外
- `packages.yml`: `dbt-labs/dbt_utils` を最初から入れる (EP.09 で深堀り)
- Pre-commit: `sqlfluff` / `dbt-checkpoint` で の lint と命名規則を強制
- ターゲットの分離: `dev` (個人) / `ci` (PR 検証) / `prod` の 3 環境を最低用意
次の話
EP.03 では実際にプロジェクト構造を組み、最初の `dbt run` を通すまでを step-by-step で。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。