dbt の階層モデル

dbt入門

Mike Metzger

Data Engineer

dbt における階層とは?

  • dbt プロジェクト内の依存関係を表す
  • 有向非巡回グラフ(DAG)または系統グラフとも呼ぶ
    • 一般的な DAG ではなく、dbt 固有である点に注意
  • 依存関係に基づきモデルを構築・更新できる

dbt の DAG / 系統グラフ

dbt入門

階層の詳細

  • avg_fare_per_daytotal_creditcard_riders_per_daytaxi_rides_raw に依存
  • dbt はまず taxi_rides_raw をビルド
  • 系統グラフがなければ dbt は名前順で作成
    • taxi_rides_raw なしでは avg_fare_per_day は失敗

dbt の DAG / 系統グラフ

dbt入門

階層はどう定義する?

  • モデルファイルで Jinja テンプレート言語を使用して定義
  • 主に ref 関数を使用
  • SQL のテーブル名を {{ ref('model_name') }} に置換
  • dbt run でテーブルを(再)マテリアライズ
  • ref テンプレートは実テーブル名に置換される
dbt入門

階層の例

SELECT 
  first_name, last_name
FROM taxi_rides_raw
SELECT 
  first_name, last_name
FROM {{ ref('taxi_rides_raw') }}
dbt入門

練習してみましょう!

dbt入門

Preparing Video For Download...