database build tool 简称 dbt,在数仓实施中 transform 阶段可以将SQL工程化、代码化的一个实用工具。工具分为 cloud 版本和本地版本,本地版本叫做 dbt-core
run 命令
dbt run # 默认执行项目中所有 models
dbt run --select "my_dbt_project_name" # 运行指定 project 名称下的所有 models
dbt run --select "my_dbt_model" # 运行指定名称的 model
dbt run --select "path.to.my.models" # 运行指定目录下的所有 models
dbt run --select "my_package.some_model" # 运行指定三方包名称下的 model
dbt run --select "tag:nightly" # 运行打了标签为 "nightly" 的 models
dbt run --select "path/to/models" # 运行指定目录下的所有 path/to/models
dbt run --select "path/to/my_model.sql" # 运行指定目录下的某个 model
--select
:选择器参数,后面支持多种选择器--exclude
:同 select 选择器用法--full-refresh
:强制更新 model ,该选项会将目标库中的表先删除,然后重建--vars
:给你的 model 传递变量
dbt-core 给 model 传递变量 (dbt run 传递/接受/收/外部变量)
About var function | dbt Developer Hub (getdbt.com)
# 使用 --vars 传递变量示例
dbt run --select my_first_dbt_model --vars '{"numbers": 888}'
# model 中使用 var 来获取入参
with source_data as (
select 1 as id
union all
select {{ var('numbers') }} as id
union all
select null as id
)
select *
from source_data
使用 --help
参数获取更多细节,本文由jeeinn原创整理
config 属性项
/* 文件路径 models/some_model.sql */
{{ config(
database="your_database_name",
full_refresh = false,
tags = ["daily", "dwd"],
materialized = "incremental",
persist_docs={"relation": true, "columns": true}
) }}
database
:指定当前模型所属数据库full_refresh
:和命令行参数功能一致,每次会将目标库中的表先删除,然后重建tags
:给 model 标记 tag,方便选择器选择materialized
:物化方式,默认为 view(视图),可指定为 table(表)、 incremental(增量更新表)persist_docs
:将 schema 定义的列描述写入目标库中的表字段备注(注:某些 adpter 并不支持)
docs 命令
用于生成文档方便查看
dbt docs generate # 生成文档元数据
dbt docs serv --port 8001 # 指定本地端口号启动网页服务并查看文档
更多完整命令请参考:dbt Command reference | dbt Developer Hub (getdbt.com)