首页/数据/数据工程与 ETL 速查/dbt 数据测试(schema 测试)

dbt 数据测试(schema 测试)

dbt 在模型 YAML 中声明通用测试:unique、not_null、accepted_values、relationships;dbt test 执行后失败即返回非零退出码,天然适合接入调度与 CI 做质量卡点。

通用测试unique / not_null / accepted_values / relationships
声明位置模型 YAML 的 columns.tests
执行dbt test 或 dbt build
退出码有失败即非零,可卡住流水线

schema.yml 测试声明

schema.yml 测试声明
models:
  - name: dwd_trade_order_detail_di
    columns:
      - name: order_id
        tests:
          - unique
          - not_null
      - name: user_id
        tests:
          - relationships:
              to: ref('dim_user')
              field: user_id
      - name: status_name
        tests:
          - accepted_values:
              values: ['created', 'paid', 'shipped', 'closed']
relationships 测试等价于外键完整性校验,能发现维度找不到的孤儿事实行。

易错点

  • 只对开发环境跑测试,生产模型没有质量卡点
  • 把严重级别不同的测试混在一起,全部失败即全链路阻塞

数据来源与参考

  • dbt 官方文档:Data Tests(通用测试)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌