我们仍然认为 dbt是在 ELT 数据管道中实施数据转换的强大且合理的选择。我们喜欢它能够引入工程上的严谨性,并支持模块化、可测试性和 SQL 转换的可重用性等实践。dbt 集成了很多云数据仓库、数据湖仓和数据库,包括Snowflake、BigQuery、Redshift、Databricks 和 Postgres,并且拥有健康的社区包生态系统。最近在 dbt core 1.8+ 和全新的 dbt Cloud 无版本体验中引入的原生单元测试支持,进一步巩固了其在我们工具箱中的地位。我们的团队很欣赏这个新的单元测试功能,它使他们能够轻松定义静态测试数据,设置输出预期,并测试管道的增量和完全刷新模式。在许多情况下,这使得团队能够淘汰自制脚本,同时保持相同的质量水平。
dbt 仍是我们在 ETL 工作流程中进行数据转换的首选工具。我们喜欢它的工程严谨性和它在 SQL 数据转换中实践模块化、可测试性、和可复用性的能力。 dbt 有开源和商业化 SaaS 产品两种版本和健康的生态,包括一个提供了许多用于单元测试、数据质量、数据可观测性等软件包的社区。这些包中尤为值得注意的是用于监测数据质量的 dbt-expectations 和用于构建数据转换的单元测试的 dbt-unit-testing。dbt 很好地集成了各种云数据仓库、数据湖和数据库,包括 Snowflake,BigQuery,Redshift,Databricks 和 Postgres。当需要处理结构化数据并且能使用 SQL 进行数据转换时,我们的团队们倾向于 dbt,因此我们将它移至采纳阶段。
自从上一次介绍dbt以来,我们在一些项目中使用了它。例如,我们倾向于使用dbt完成ELT管道中转换部分的工作,使其更容易被数据消费者访问,而不是仅由数据工程师构建ELT管道。dbt通过鼓励良好的工程实践,如版本控制、自动化测试和部署,来实现这一点。SQL仍然是数据世界(包括数据库、仓库、查询引擎、数据湖和分析平台)的通用语言,大多数系统都在一定程度上支持它。这就使得这些系统可以通过构建适配器来使用dbt进行转换。原生连接器的数量不断增长并囊括了Snowflake、BigQuery、Redshift和Postgres,社区插件的范围也在扩张。我们看到像dbt这样的工具正在帮助数据平台变得更加“自助”。
数据转换是数据处理工作流的重要组成部分:筛选、分组或组合多个数据源,将它们转换为适合分析数据或机器学习模型使用的格式。dbt既是一个开源工具,也是一个商业化的SaaS产品,为数据分析师提供了简单高效的转换功能。现有的数据转换框架和工具,要么过分专注于功能强大和灵活性,却也要求对编程模型及语言框架有深刻的理解,例如Apache Spark;要么就只提供一些死板的界面拖放工具,而无法使用可靠的工程实践,如自动化测试和部署。dbt填补了这个空白:它使用被广泛理解的接口,SQL,对简单的批处理转换进行建模。同时dbt也提供了命令行工具以支持版本控制、自动化测试和部署等良好的工程实践。实际上,dbt基于SQL实现了转换模型即代码。目前,dbt支持包括SnowflakeSnowflake和Postgres在内的多种数据源,并提供Airflow及Apache自己的云服务等多种运行方式。dbt的转换能力受限于SQL,在撰写本文时还不支持实时的流式转换。