dbt-core常用命令参数及models配置

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)

Author: thinkwei

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注