DBT如何为单个模型下的所有测试统一添加配置?
问题原因
dbt_project.yml里的tests:配置节点仅支持按目录路径做层级匹配,不支持直接在目录路径下写具体模型名定向匹配单个模型的测试。你把fct_revenue_events写在tests.my_project.marts.finance路径下时,dbt会把它识别为同名子目录,找不到对应目录资源就会抛出未使用配置路径的警告,配置自然不会生效。
可行配置方法
有两种经过验证的写法可以实现单个模型全测试应用where过滤:
方法1:模型文件内配置(最推荐,零路径匹配问题)
直接打开目标模型文件fct_revenue_events.sql,在文件头部的config块中添加where配置,规则会自动应用到该模型下的所有内置测试、自定义通用测试:
{{ config( +where: "date_column = current_date" ) }} -- 下方为原有模型业务SQL逻辑 select ...
方法2:dbt_project.yml全局配置(无需修改模型文件)
不要把规则写在tests:配置块下,转而在models:配置块中定位到目标模型,再加+前缀声明配置作用于该模型的所有测试即可:
models: my_project: marts: finance: fct_revenue_events: +where: "date_column = current_date"
注意:路径必须和模型实际存放的目录层级完全一致,如果模型存放在finance下的二级子目录,需要补全完整目录路径后再写模型名,否则还是会出现路径不匹配的问题。
配置完成后重新执行dbt测试,就能看到该模型的所有测试都会自动拼接你写的where过滤条件,不会影响同目录下其他模型的测试逻辑。
内容的提问来源于stack exchange,提问作者naitchman
相关产品推荐
相关产品推荐

