如何通过代码或配置而非命令禁用DBT项目中的指定模型目录
解决方案
有两种无需修改命令即可让DBT忽略def/目录的方法,具体如下:
方法一:修改根目录的dbt_project.yml
在项目根目录的dbt_project.yml中,找到models配置块,针对def子目录添加全局禁用配置:
models: # 替换为你dbt_project.yml中定义的项目名称(name字段的值) my_dbt_project: # 全局启用所有模型(可选,默认即为true) +enabled: true # 单独禁用def目录下的所有模型 def: +enabled: false
这种方式会直接将def/目录下的所有模型标记为禁用,执行dbt run --profiles-dir=. --select models/时会自动跳过该目录的内容。
方法二:在def/目录内添加配置文件
如果不想修改根目录的配置文件,可以在def/目录下新建一个dbt_project.yml文件,内容如下:
models: # 同样替换为你的项目名称 my_dbt_project: def: +enabled: false
DBT会自动加载子目录中的配置文件,该配置会覆盖根目录的默认设置,实现仅禁用当前def/目录下的模型。
原理说明
+enabled: false是DBT的核心配置项,标记为false的模型会被排除在所有命令的执行范围之外,无论你使用--select models/这样的路径选择器还是其他选择方式,都不会触发这些模型的编译、运行或测试。
内容的提问来源于stack exchange,提问作者IamYourFaja
相关产品推荐
相关产品推荐

