dbt
你可能会说
SQL 脚本满天飞,谁能说清这张表是怎么来的?
用 SQL 做数据建模与转换模型即 SQL 文件,靠 ref 自动解析依赖,附带测试、文档和血缘;只负责 T(转换),不负责抽取和加载。
也常被叫作数据建模ELT
什么时候选它
- 数仓分层建模(staging / marts)
- SQL 需要版本管理、测试和血缘文档
- 团队以 SQL 为主,不想写一堆脚本
什么时候别选
- 需要抽取和加载(配 Airflow / Fivetran)
- 非 SQL 的复杂计算(用 Spark 代码)
- 一次性脚本,不需要长期维护
容易混在一起 · 怎么分
dbt≠存储过程
dbt 把转换写成版本化 SQL 模型,有依赖、测试和文档;存储过程逻辑藏在数据库里,难 review 难血缘。
Q面试会问什么
- 问:dbt 到底做什么?
答:把 SELECT 编译成建表 / 视图语句,按 ref 解析依赖顺序执行,并跑测试生成文档。 - 问:怎么测试?
答:schema.yml 里声明 not_null / unique / relationships 等,dbt test 执行校验。
延伸阅读 · 权威出处