dbt(Data Build Tool)一款专为数据分析和工程师设计的开源工具,专注于 ETL/ELT 流程的数据转换(Transform)环节,帮助用户以高效、可维护的方式将原始数据转换为适合分析的数据模型。
用户只需要编写查询(SELECT)语句或者 Python 代码,dbt 负责将这些语句和代码转换为表、视图或者数据集;多个查询语句(也称为模型)组成一个 dbt 项目,一个模型通常基于其他模型构建,dbt 负责管理它们之间的关系和依赖。
dbt 通过将版本控制、模块化、可移植性、CI/CD 以及测试和文档化等软件工程最佳实践引入数据分析的工作流之中,提升了数据转换的可靠性和可维护性。dbt 的主要功能包括:
- 简化开发,通过编辑模块化的查询语句或者 Python 代码,避免了数据转换过程中重复的表创建和维护;
- 动态 SQL,支持使用 Jinja 模板实现动态 SQL(如变量、循环、条件语句),提升代码复用性;
- 定义模块顺序,使用 ref 函数基于其他模型定义新的模型,实现模块之间的依赖和执行顺序;
- 文档生成,支持自动生成项目和数据文档,可视化表与字段的依赖关系;
- 模型测试,确保转换模型的准确性和完整性;
- 包管理,模块化代码管理和共享;
- 种子文件,通过 CSV 文件加载参考表、配置表等静态数据;
- 数据快照,通过记录数据的历史状态变化,支持数据回溯。
dbt 支持连接各种数据库、数据仓库、数据湖以及查询引擎,包括 AlloyDB、Apache Spark、Athena、Azure Synapse、BigQuery、Databricks、Dremio、Glue、IBM Netezza、Materialize、Microsoft Fabric、Oracle、PostgreSQL、Redshift、Snowflake、Trino、Teradata、Clickhouse、CrateDB、Databend、Doris、DuckDB、Hive、DB2、Impala、MySQL、SQL Server & Azure SQL、SQLite、Starrocks、TiDB、TimescaleDB、Spark 等数据平台。
dbt 提供了两种形式的产品:
- dbt Core:免费开源的 CLI 工具,支持命令行形式开发和运行 dbt 项目。
- dbt Cloud:基于 Web 的托管服务,提供 UI 界面以及各种企业级功能;对个人开发者免费。
dbt Cloud输入以下网址并注册一个免费账号:https://www.getdbt.com/signup
本地安装可以参考官方文档:https://docs.getdbt.com/