2

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

这个选择器描述了从单个节点上游和节点联合下游的节点选择,不包括视图和物化视图(在我们的 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

我希望与 类似dbt test,此命令将运行与test_selector选择中指定的模型相关的所有测试,但情况似乎并非如此。

似乎在语法概述--selector中指定了该标志,并且文档的测试选择示例部分提到“您可以使用选择器方法检查正在测试的资源的配置属性”。没有任何在测试中使用标志的例子,所以我不确定我是否遗漏了什么。应该支持这种类型的语法还是我误解了文档?谢谢!dbt test--selector

4

1 回答 1

4

很高兴您使用 YAML 选择器!

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

同时,如果您可以以不同的方式指定该逻辑——例如,不是排除所有视图物化模型,而是排除staging目录中的所有模型——我建议您试一试。

于 2020-10-05T14:20:23.620 回答