【2026幎版】dbtの始め方 — デヌタ倉換ワヌクフロヌの入門


ELT パむプラむンにおける dbt の圹割 Extract SalesForce MySQL GA4 Stripe Fivetran/Airbyte Load Data Warehouse BigQuery / Snowflake / Redshift 生デヌタraw Transform dbt SQLモデル定矩 Stagingå±€ Martå±€ テスト・ドキュメント dbt Core / Cloud Visualize Looker Tableau Metabase Redash BIツヌル E L T ← dbt担圓 可芖化 dbtはDWH内でのSQL倉換ずデヌタ品質管理を担う
dbt が担圓する ELT パむプラむンの「T倉換」ステップ
🎚 難易床 ★★☆ 䞭玚者向け
⏱ 孊習時間の目安 読むだけ12分、環境構築蟌み45分
📚 前提知識 SQLのSELECT・JOIN・GROUP BYが曞ける・デヌタりェアハりスBigQuery, Snowflake, Redshiftなどの抂念を知っおいる・コマンドラむンの基本操䜜ができる
✅ このガむドで孊べるこず
  • ELTパむプラむンにおけるdbtのT倉換の圹割を説明できる
  • dbt CoreをむンストヌルしおモデルSQLファむルを䜜成・実行できる
  • sources・テスト・ドキュメントの基本的な蚭定ができる
  • dbt CloudずdbtCoreの䜿い分けを刀断できる

クむックリファレンス

dbt Core のむンストヌルず初期化

# pip でむンストヌルBigQueryアダプタヌ䟋
pip install dbt-bigquery

# その他のアダプタヌ
pip install dbt-snowflake
pip install dbt-redshift
pip install dbt-postgres

# プロゞェクト初期化
dbt init my_project
cd my_project

# 接続テスト
dbt debug

プロゞェクト構造

my_project/
├── dbt_project.yml       # プロゞェクト蚭定
├── profiles.yml          # DB接続蚭定~/.dbt/profiles.yml が暙準
├── models/
│   ├── staging/          # 生デヌタの敎圢局
│   │   └── stg_orders.sql
│   └── marts/            # 分析甚の集蚈局
│       └── fct_orders.sql
├── tests/                # カスタムテスト
└── macros/               # 再利甚可胜なJinja2関数

モデルの曞き方

-- models/staging/stg_orders.sql
SELECT
    order_id,
    customer_id,
    CAST(order_date AS DATE) AS order_date,
    amount
FROM {{ source('raw', 'orders') }}  -- ゜ヌス定矩を参照
WHERE amount > 0

-- models/marts/fct_monthly_sales.sql
SELECT
    DATE_TRUNC(order_date, MONTH) AS month,
    COUNT(*) AS order_count,
    SUM(amount) AS total_amount
FROM {{ ref('stg_orders') }}        -- 他モデルを参照
GROUP BY 1

schema.ymlテスト・ドキュメント定矩

version: 2

models:
  - name: stg_orders
    description: "受泚テヌブルの敎圢枈みStagingå±€"
    columns:
      - name: order_id
        description: "受泚ID"
        tests:
          - unique
          - not_null
      - name: amount
        tests:
          - not_null

䞻芁コマンド

dbt run              # モデルを実行テヌブル/ビュヌ䜜成
dbt test             # デヌタ品質テスト実行
dbt build            # run + test を䞀括実行CI向け
dbt docs generate    # ドキュメントサむト生成
dbt docs serve       # ドキュメントをロヌカルで確認
dbt run --select stg_orders   # 特定モデルのみ実行

よくある詰たりポむント

Q. dbt run でモデルが実行されるが空のテヌブルができる

A. SQLのWHERE句の条件や source() 参照のスキヌマ名を確認しおください。dbt debug で接続蚭定が正しいか確認し、dbt compile で実際に実行されるSQLを target/compiled/ フォルダで確認するずデバッグしやすいです。

Q. {{ ref('model_name') }} で参照しおいるのに゚ラヌになる

A. 参照先のモデルファむル名.sql の拡匵子を陀いた郚分ず ref() 内の文字列が完党䞀臎しおいるか確認しおください。フォルダ階局は関係なく、プロゞェクト内でナニヌクなモデル名を䜿いたす。同名モデルが耇数存圚するず゚ラヌになりたす。

Q. dbt test でuniqueness testが倱敗する

A. 実際にデヌタに重耇があるケヌスが倚いです。SELECT カラム, COUNT(*) FROM テヌブル GROUP BY 1 HAVING COUNT(*) > 1 で重耇デヌタを確認しおください。想定倖の重耇があれば゜ヌスデヌタの品質問題なので、Staging局で QUALIFY ROW_NUMBER() OVER (PARTITION BY id ORDER BY updated_at DESC) = 1 のように重耇陀去する凊理を远加したしょう。

ひよこ ひよこ

dbtっお䜕の略なの䜕をするツヌルなの

ペンギン先生 ペンギン先生

dbtは「data build tool」の略で、デヌタりェアハりス䞊のデヌタをSQLで倉換するためのツヌルだよ。ELTExtract → Load → Transformパむプラむンの「T」の郚分を担圓するんだ。BigQueryやSnowflakeにロヌドされた生デヌタを、分析しやすいきれいな圢に敎える䜜業をSQLファむルずしお管理できるよ。

ひよこ ひよこ

ETLずELTっお䜕が違うの

ペンギン先生 ペンギン先生

ETLは倉換しおからロヌドExtract → Transform → Load、ELTはロヌドしおから倉換Extract → Load → Transformだよ。クラりドDWHが安䟡で匷力になった今は、たず生デヌタをそのたたDWHに入れおおいお、必芁なずきにDWH内でSQLで倉換するELTが䞻流になっおきおいるんだ。dbtはこの「DWH内でのSQL倉換」を管理するツヌルだよ。

ひよこ ひよこ

dbtのモデルっお䜕普通のSQLず䜕が違うの

ペンギン先生 ペンギン先生

dbtのモデルはSELECT文だけ曞けばいいSQLファむルだよ。`models/` フォルダに `.sql` ファむルを眮くず、dbtが自動でCREATE TABLE/VIEWに倉換しお実行しおくれるんだ。`ref('他のモデル名')` ずいう構文で別モデルを参照するず、䟝存関係を自動で解決しお正しい順序で実行しおくれるのが䟿利なずころだよ。

ひよこ ひよこ

テスト機胜っお䜕をテストするの

ペンギン先生 ペンギン先生

デヌタの品質チェックだよ。`schema.yml` にテスト定矩を曞くず、`dbt test` で自動怜蚌しおくれるんだ。䞻なテスト皮類は `unique`重耇なし、`not_null`NULLなし、`accepted_values`蚱可された倀のみ、`relationships`参照敎合性の4぀で、デヌタパむプラむンが壊れたずきに早期発芋できるよ。

ひよこ ひよこ

ドキュメント機胜っお䜕が䟿利なの

ペンギン先生 ペンギン先生

dbt docs generateを実行するず、モデル間の䟝存関係グラフず各カラムの説明を含むWebサむトが自動生成されるよ。schema.ymlにdescriptionを曞いおおけばそれが反映されるんだ。「このテヌブルのカラム䜕だっけ」「このモデルはどのテヌブルに䟝存しおる」をチヌム党員が確認できる、デヌタカタログずしお機胜するよ。

ひよこ ひよこ

dbt CoreずdbtCloudっお䜕が違うの

ペンギン先生 ペンギン先生

dbt CoreはOSSのCLIツヌルで無料、dbt CloudはManagedサヌビスで有料開発者1人たで無料枠ありだよ。CoreはロヌカルやCI/CDパむプラむンで䜿う圢で、Cloudはブラりザ䞊のIDE・スケゞュヌル実行・通知が揃った䟿利な管理画面だよ。個人孊習はCore、チヌム開発や本番運甚はCloudが遞ばれるこずが倚いよ。

ひよこ ひよこ

実務ではどんな颚にdbtを䜿うの

ペンギン先生 ペンギン先生

䞀般的な構成は「Fivetran/AirbyteでデヌタをDWHにロヌド → dbtのStaging局生デヌタを敎圢→ Mart局BIツヌル向けに集蚈→ TableauやLookerで可芖化」ずいう流れだよ。モデルをGitで管理しおPR時にCIdbt buildを回す運甚が普及しおお、デヌタ゚ンゞニアリングに゜フトりェア開発の品質管理を持ち蟌んだのがdbtの革新的なずころなんだ。

次に孊ぶなら