选型

dbt

你可能会说

SQL 脚本满天飞,谁能说清这张表是怎么来的?

用 SQL 做数据建模与转换模型即 SQL 文件,靠 ref 自动解析依赖,附带测试、文档和血缘;只负责 T(转换),不负责抽取和加载。
也常被叫作数据建模ELT
先问一句数仓 SQL 要版本化和测试?
默认dbt→擅长模型 + 测试 + 血缘→别用抽取加载调度
成熟度采用

什么时候选它

  • 数仓分层建模(staging / marts)
  • SQL 需要版本管理、测试和血缘文档
  • 团队以 SQL 为主,不想写一堆脚本

什么时候别选

  • 需要抽取和加载(配 Airflow / Fivetran)
  • 非 SQL 的复杂计算(用 Spark 代码)
  • 一次性脚本,不需要长期维护
容易混在一起 · 怎么分
dbt≠存储过程

dbt 把转换写成版本化 SQL 模型,有依赖、测试和文档;存储过程逻辑藏在数据库里,难 review 难血缘。

Q面试会问什么

  • 问:dbt 到底做什么?
    答:把 SELECT 编译成建表 / 视图语句,按 ref 解析依赖顺序执行,并跑测试生成文档。
  • 问:怎么测试?
    答:schema.yml 里声明 not_null / unique / relationships 等,dbt test 执行校验。
延伸阅读 · 权威出处