如何在dbt中仅运行一组存在关联依赖的指定模型?
DBT 关联依赖模型组定向运行方法
DBT 原生的--select参数就支持依赖关系匹配,不需要额外安装组件,针对关联模型组的运行需求,直接使用以下语法即可:
核心依赖选择规则
- 运行目标模型 + 它的全部上游依赖(所有前置转换链路,从最底层源表到目标模型本身):在模型名前加
+
例如要运行forecast及所有它依赖的前置模型,执行命令:dbt run --select +forecast - 运行目标模型 + 它的全部下游依赖(所有依赖该模型的后续转换链路,从目标模型本身到最末端结果表):在模型名后加
+
例如修改完sales_prediction后,要重跑它本身以及所有引用它的下游模型,执行命令:dbt run --select sales_prediction+ - 运行目标模型 + 全部上下游关联链路(覆盖该模型所在的整条转换血缘,包含上游所有前置表、模型本身、下游所有依赖表):在模型名前后都加
+
如果你需要运行sales_prediction和forecast所在的整条关联依赖链路,执行命令:
如果需要限制上下游遍历的层数,可以在dbt run --select +sales_prediction++后加数字,例如2+sales_prediction+1代表仅选择sales_prediction的2层上游、模型本身、1层下游。 - 运行多个指定模型的关联组:将多个模型的选择规则用空格分隔即可,例如要同时跑
sales_prediction全链路和forecast全链路,执行命令:dbt run --select +sales_prediction+ +forecast+
补充实用技巧
- 可以按目录选择关联模型,例如要跑
models/sales目录下所有模型及它们的上游依赖,执行dbt run --select +models/sales/即可。 - 可以结合标签批量选择:提前给同业务域的模型打上统一标签(例如预测域模型都打
forecast_biz标签),后续直接执行dbt run --select tag:forecast_biz就能一次性跑完该业务域所有关联模型,不需要逐个指定模型名。
上述选择语法在
dbt test、dbt build等其他需要选择模型的命令中完全通用,不是仅能搭配dbt run使用。

内容的提问来源于stack exchange,提问作者Pierre-Alexandre
相关产品推荐
相关产品推荐

