用途:dbt 是命令行数据转换工具,用基于 SQL 的模型在数据仓库中完成转换,帮助开发者编写、测试并文档化数据转换,保障 ETL 流程可靠。适用于 Snowflake、BigQuery、Redshift 等仓库的 SQL 数据模型构建,可用于增量数据加载、模式演进和管道自动化测试;不适用于实时处理或非 SQL 数据源。
主要能力:在 .sql 文件中定义可复用 SQL 模型,支持 Jinja 模板动态查询(如 {{ var('date') }} 注入参数);通过 YAML 配置运行 schema 检查或自定义断言等自动化测试(如 not_null、unique);用 dbt docs generate 自动生成含依赖与描述的文档;借 is_incremental() 宏处理增量模型以减少仓库负载;通过 dbt hub 的宏和包扩展功能。
使用方式:dbt init 初始化项目,在 models/ 目录编写 SQL 模型,在 profiles.yml 配置连接,迭代运行和测试模型,并用 seeds 管理静态数据、snapshots 处理缓慢变化维度。常用命令包括 dbt init --name project_name、dbt run --models model_name --target prod --threads 8、dbt test --select source:raw_data、dbt docs generate && dbt docs serve。可在 Python 中用 subprocess 调用,并通过环境变量(如 DBT_PROFILES_DIR)配置。
集成与限制:在 profiles.yml 中按仓库类型配置账户、项目等连接信息,密钥用环境变量传入;可结合 Git 做版本控制、Airflow 等做编排调度。排错可用 dbt debug 验证连接、dbt compile 预览 SQL、--fail-fast 在首个错误处停止。资料未提供具体价格与完整官方文档,使用前建议核对官方说明。