如何在DBT项目中参数化同一目标内的模式

  • 本文关键字:目标 模式 参数 DBT 项目 dbt
  • 更新时间 :
  • 英文 :


我将模型拆分为4个子文件夹,每个子文件夹都有特定的sql模型。

model1 - schema STG_dev
model2 - schema ODS_dev
model3 - schema DWH_dev
model4 - schema FIN_dev 

每个文件夹/模型需要不同的模式,我不想在sql脚本开头的config()中将模式名称写为硬编码值。

考虑到模型子文件夹的名称,我该如何计算模式值作为一个变量?

您可以在dbt_project.yml中的模型配置中使用+语法进行定义。

示例:

models:
project_name:
STG_dev:
+schema: STG_dev
ODS_dev:
+schema: ODS_dev
DWH_dev:
+schema: DWH_dev
STG_dev:
+schema: STG_dev
FIN_dev:
+schema: FIN_dev 

现在,对应目录下的所有模型都将应用该模式名称。例如,models/STG_dev下的模型将具有STG_dev模式。

在运行dbt compile之后,可以通过检查target/manifest.json文件进行验证。