dbt 中的階層式模型

dbt 入門

Mike Metzger

Data Engineer

什麼是 dbt 的階層?

  • 表示 dbt 專案內的相依關係
  • 亦稱為有向無環圖(DAG)或 lineage graph(血緣圖)
    • 注意這是 dbt 特有的用法,而非一般的 DAG
  • 允許依相依關係建置/更新模型

dbt DAG/血緣圖

dbt 入門

階層細節

  • avg_fare_per_day 與 total_creditcard_riders_per_day 依賴 taxi_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...