dbt v2.0 刚发两版修复:Rust 重写两年后,dbt 还值不值得追

dbt v2.0 刚发了两个版本,都是 Rust 重写那一版的核心 bug 修复。距离 2024 年 dbt Labs 用 Rust 从零重写 dbt Core 已经过去快两年,这件事在数据工程师群体里至今仍是热门话题——毕竟 v1 是 Python 写的,全球有 5 万个团队每周都在用,一次底层重写不是小事。

dbt 是什么,解决了什么问题

dbt 的核心功能一句话就能说清:让分析师用写 SQL select 语句的方式定义数据转换,dbt 负责把这些语句编译成目标仓库(Snowflake、BigQuery、Databricks 等)的实际表或视图,并自动处理依赖关系、测试、文档和部署。

听起来不复杂,但 dbt 把软件工程的整套实践带进了数据分析:

  • 版本控制:所有模型写进 Git,每次变更有记录、可回滚、有代码审查。
  • 测试:内置 null 检查、唯一性、外键关系等数据质量断言,不用等 bug 流到下游 dashboard 再发现。
  • 文档:dbt docs 自动从代码和注释生成血缘图和数据字典,告别维护一份永远过时的 Confluence。
  • CI/CD:代码合并前自动跑测试和编译,出了问题不等上线再发现。
  • 可复用:一个 metric 定义一次,整个组织共用,不再每张报表自己写一遍”DAU”的定义。

这套实践有个名字,叫 Analytics Engineering Lifecycle(ADLC)——把软件开发周期搬进数据仓库。dbt 把原来掌握在少数 DBA 手里的数据转换,变成了分析师也能参与、代码能 review、质量有保障的正规工程流程。

v2.0 变在哪

v2.0 的最大变化是底层语言:Python 换成 Rust。这不是赶时髦,是性能压力驱动的。

在 v1 时代,大型 dbt 项目编译一次要跑很久——几十上百个模型、层层依赖、增量编译慢,项目越大越难等。Rust 重写之后,dbt Labs 声称解析和编译时间”大幅缩短”,官方文档里特别提到 v2 在”最大型 dbt 项目”上提升最明显。

其他关键变化:

  • 打包方式:v2 发的是单个二进制文件,不依赖 Python 运行时,不用装 pip 包管理依赖,开箱即用。
  • 产物格式:v2 输出 Parquet 格式的制品(manifest + results),替代原来的 JSON,可直接被数据湖 / Lakehouse 查询引擎读取,JSON 格式为兼容仍保留。
  • 更严格的解析:引入了严格的语言规范,在解析阶段就做正确性校验,而不是等到运行时才发现问题。
  • 文档重构:dbt docs 依赖新制品文件,支持大规模项目的文档渲染。
  • 可观测性:内置 OpenTelemetry(OTLP)集成,支持把 dbt 运行时的遥测数据接到外部监控系统。

需要注意的是:dbt v2 的源代码是 Apache 2.0 开源,但 dbt 品牌产品本身(dbt Cloud / dbt Fusion Engine)有独立的产品许可证,不是完全开源的商业软件。社区里对这个区别有过一些讨论,如果你需要的是完全开源的替代品,关注 1.latest 分支的 v1 Python 实现。

9 月刚发生了一件大事:Fivetran 收购了 dbt Labs

2026 年 6 月,Fivetran 和 dbt Labs 宣布合并成为一家公司。Fivetran 做的是”抽取+加载”(ELT 的 EL 部分),dbt 做的是转换(T 部分),两者合并的逻辑很直接:Fivetran 把数据从各种业务系统搬进云数据仓库,dbt 把这些原始数据变成业务可用的模型,两家联手就是想覆盖完整的 ELT 流程。

对于现有 dbt 用户来说,这个合并的影响还在展开:dbt Cloud 的功能和路线图会怎么变,dbt 开源核心和商业产品的边界会不会调整,都需要持续关注。不过 dbt Labs 公开表态 Fusion Engine 会继续独立发展,dbt Core 开源版本不受影响。

谁该用,谁该等

适合用 dbt 的团队:

  • 已经在用 Snowflake / BigQuery / Databricks 等云数据仓库,数据 transformation 靠手工 SQL 脚本或 stored procedure,缺少版本控制、测试和文档。
  • 数据团队有 3 人以上,分析师和工程师都开始参与数据建模,需要协作规范。
  • 需要从”一张报表出问题我都不知道去哪查”升级到”代码可 review,模型有 lineage,测试能捕获数据质量事故”。

不适合用 dbt 的场景:

  • 需要实时流式处理——dbt 是批处理导向,实时场景看 Kafka Streams 或 Apache Flink。
  • 还没有数据仓库——dbt 依赖一个支持标准 SQL 的目标仓库,没有仓库的话 dbt 无从运行。
  • 小团队(2 人以下)只跑几张报表,dbt 的工程化开销暂时超出收益。

真实使用门槛

dbt Core 本身是免费的,pip install 就能跑。但这只是命令行工具,不包含调度、托管文档站点、CI/CD runner 和团队协作功能——这些是 dbt Cloud 的能力。

社区反馈的常见痛点:

  • dbt Cloud 按座位收费(官价约 $100/人/月),大团队成本上升明显。
  • dbt 的 SQL-only 工作流对复杂业务逻辑有局限,涉及 Python 数据处理的场景需要另外的工具(Dagster、Airflow 等经常与 dbt 搭配)。
  • v2 的 Rust 二进制是闭源的 Fusion Engine 部分,如果只想要纯开源 v1,继续用 Python 版即可。

实际数据:Automation Atlas 的评测记录了一个 5 人分析团队使用 dbt Core + Airflow 自托管的案例,300+ 模型跑了 14 个月,数据质量问题导致的 dashboard 错误在第一季下降了 72%。dbt Cloud 他们评估过但没选,理由是团队规模用自托管足够,省下每月 $500。

下一步建议

如果你的团队已经在用云数据仓库,想把数据转换规范化,可以从以下步骤开始:

第一步:安装 dbt Core 尝鲜。 pip install dbt-core 装完,用官方教程跑通一个本地示例,不需要任何付费产品。

pip install dbt-core
dbt init my_first_project
cd my_first_project
dbt debug  # 验证和数据仓库的连接
dbt run    # 运行你的第一个模型

第二步:用 dbt-vscode 扩展体验开发工作流。 官方维护的免费扩展支持语法高亮、模型预览、 lineage 查看,是目前最顺的本地开发体验。

第三步:评估 dbt Cloud vs. 自托管的边界。 如果团队协作需求高、需要托管文档和 CI 功能,dbt Cloud 的价值才能体现;小团队或纯 CLI 偏好者用 Core + GitHub Actions 完全够用。

第四步:关注 Fivetran + dbt 合并后的产品路线图。 2026 年 dbt Summit(9 月 16-17 日)刚结束,官方博客有发布摘要,值得跟踪看有没有 Semantic Layer 或 Copilot 功能的新动态。


链接汇总:

评论区

0 条评论

登录后可评论。

器匠·开发者工具 1983 阅读