dbt关系测试编译错误:测试定义字典必须只有一个键

Mar*_*ark 6 dbt

我是 dbt 的新用户,尝试编写一个关系测试:

- name: PROTOCOL_ID
  tests:
    - relationships:
    to: ref('Animal_Protocols')
    field: id
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Compilation Error
Invalid test config given in models/Animal_Protocols/schema.yml:
test definition dictionary must have exactly one key, got [('relationships', None), ('to', "ref('Animal_Protocols')"), ('field', 'id')] instead (3 keys)
@: UnparsedNodeUpdate(original_file_path='model...ne)
Run Code Online (Sandbox Code Playgroud)

同一文件中的“unique”和“not-null”测试工作正常,但我对“accepted_values”有类似的错误。

我在 MacOS Big Sur 11.6 上使用 dbt cli 版本 0.21.0 和 Snowflake。

And*_*son 16

你们非常接近!我 96% 确信这是一个缩进问题——使用 YAML 的第一大痛点。解决方案是两者tofield需要缩进到relationships键下方,而不是在同一级别。

有关示例,请参阅测试 dbt 文档页面

  - name: PROTOCOL_ID
    tests:
      - relationships:
          to: ref('Animal_Protocols')
          field: id
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!这是一个很好的线索,尽管这并不是问题所在。我原来的帖子没有显示我的缩进。我的编辑器在每个级别设置了 2 个缩进空间。这适用于大多数级别(例如“-tests:”),但不适用于紧邻“-relationships:”下面的级别。当我将“to:”和“from:”从 2 个缩进空格更改为 4 个空格后,它就起作用了。啊啊啊啊啊啊!我一直都知道 YAML 的语法是一个坏主意。 (3认同)