dbt编写relationship测试报test definition dictionary单key错误如何解决?
问题原因
该报错由YAML缩进配置错误导致。dbt要求带参数的测试项,参数必须作为对应测试名的子属性进行缩进,你当前写法中to、field和relationships属于同级属性,YAML会将三者解析为三个独立的测试配置键,因此触发编译错误。
正确配置示例
调整缩进,将to和field放到relationships的下一级,保持缩进统一即可:
- name: PROTOCOL_ID tests: - relationships: to: ref('Animal_Protocols') field: id
同类测试写法说明
accepted_values等其他带参数的测试也遵循同样的缩进规则,示例如下:
- name: STATUS tests: - accepted_values: values: ['active', 'inactive', 'draft']
注意事项
- YAML对缩进敏感,统一使用2个或4个空格作为缩进单位,不要混用Tab和空格,Mac环境下建议开启编辑器的「Tab自动转空格」配置,避免隐形缩进错误
- 无参数的
unique、not_null测试不需要额外缩进,因此你之前的这两类测试可以正常运行 - 该语法完全适配dbt 0.21.0版本与Snowflake数据源,不需要调整运行环境配置
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

