我在 dbt 中编写了一个通用测试:is_postive.sql
{% test is_postive(model, column_name) %}
select
{{ column_name }}
from {{ model }}
where {{ column_name }} < 0
{% endtest %}
此测试位于我的 dbt 项目中的tests/generic 文件夹中。 dbt 项目 yaml 文件将测试位置设置为此文件夹
test-paths: ["tests"]
我正在尝试在模型的 yaml 文件中引用此测试:
models:
- name: fct__monthly_revenue
tests:
- unique:
column_name: "id || '-' || date"
config:
schema: analytics
columns:
- name: revenue
tests:
- is_positive:
severity: warn
但是,当我尝试构建模型时,我收到此错误:
Compilation Error in test is_positive_fct__monthly_revenue_revenue (models/analytics/fpaa/fpaa_revenue.yml)
'test_is_positive' is undefined. This can happen when calling a macro that does not exist. Check for typos and/or install package dependencies with "dbt deps".
我已经尝试过的一些事情:
是的,我确实知道我可以使用 dbt_utils 中接受的范围,但我想构建更多自定义通用测试,因此我试图首先使用一个相对简单的测试来工作
一切看起来都很好,除了当您定义
severity
时,您还需要在 YAML 上添加 config:
。
尝试以下操作:
models:
- name: fct__monthly_revenue
tests:
- unique:
column_name: "id || '-' || date"
config:
schema: analytics
columns:
- name: revenue
tests:
- is_positive:
config:
severity: warn