选择器未找到“dbt test”的节点

Jul*_*eon 3 dbt

我正在尝试定义一个 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

Jer*_*hen 5

很高兴您正在使用 YAML 选择器!

\n

config.materialized:view组合使用测试 + 选择器时存在一个已知错误: https://github.com/fishtown-analytics/dbt/issues/2806。它 100% 仅限于“视图”具体化。鉴于您的选择器定义排除了 all config.materialized:view,当前的行为是错误地排除所有测试。你没有做错什么;我们正在努力解决下一版本 dbt 的该问题。

\n

同时,如果您可以以不同的方式指定该逻辑\xe2\x80\x94e.g. 与其排除所有视图物化模型,不如排除staging目录 \xe2\x80\x94 中的所有模型,我建议尝试一下。

\n