我正在尝试定义一个 dbt YAML 选择器,以便我可以为一组特定的模型运行架构测试。
YAML 选择器看起来有点像这样:
selectors:
- name: test_selector
definition:
union:
- intersection:
- node+
- tag:tag1
- intersection:
- node+
- tag:tag2
- intersection:
- node+
- +tag:tag3
- intersection:
- node+
- +tag:tag4
- exclude:
- config.materialized:view
- config.materialized:materialized_view
Run Code Online (Sandbox Code Playgroud)
该选择器描述了单个节点上游和节点联合下游的节点选择,不包括视图和物化视图(在我们的 dbt 项目中自定义)。
使用此语法,我可以使用 成功列出此语法指定的节点dbt ls --selector test_selector --output name,并使用 成功运行指定的模型dbt run --selector test_selector,但相同的行为似乎不适用于dbt test。
当我尝试时dbt test --selector test_selector,我收到输出
WARNING: Nothing to do. Try checking your model configs and model specification args
Run Code Online (Sandbox Code Playgroud)
我希望与 类似dbt test,此命令将运行与选择中指定的模型关联的所有测试test_selector,但情况似乎并非如此。
似乎该标志是在语法概述--selector中指定的,并且文档的测试选择示例部分提到“您可以使用选择器方法来检查正在测试的资源的配置属性”。没有任何在测试中使用该标志的示例,所以我不确定我是否遗漏了一些东西。应该支持这种类型的语法还是我误解了文档?谢谢!dbt test--selector
很高兴您正在使用 YAML 选择器!
\nconfig.materialized:view组合使用测试 + 选择器时存在一个已知错误: https://github.com/fishtown-analytics/dbt/issues/2806。它 100% 仅限于“视图”具体化。鉴于您的选择器定义排除了 all config.materialized:view,当前的行为是错误地排除所有测试。你没有做错什么;我们正在努力解决下一版本 dbt 的该问题。
同时,如果您可以以不同的方式指定该逻辑\xe2\x80\x94e.g. 与其排除所有视图物化模型,不如排除staging目录 \xe2\x80\x94 中的所有模型,我建议尝试一下。