dbt 中的层级模型

dbt 入门

Mike Metzger

Data Engineer

dbt 中的层级是什么?

  • 表示 dbt 项目内的依赖关系
  • 也称有向无环图(DAG)或血缘图
    • 注意:这是 dbt 特有的血缘图,而非通用 DAG
  • 使模型可按依赖顺序构建/更新

dbt DAG / 血缘图

dbt 入门

层级细节

  • avg_fare_per_daytotal_creditcard_riders_per_day 依赖 taxi_rides_raw
  • dbt 会先构建 taxi_rides_raw
  • 若无血缘图,dbt 按字母顺序创建
    • 没有 taxi_rides_rawavg_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 入门

Passons à la pratique !

dbt 入门

Preparing Video For Download...