dbt 中无法识别测试

问题描述 投票:0回答:1

我在 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".

我已经尝试过的一些事情:

  • 将文件名更改为 test_is_positive.sql
  • 最初直接将测试放在测试文件夹中,而不是通用子文件夹中

是的,我确实知道我可以使用 dbt_utils 中接受的范围,但我想构建更多自定义通用测试,因此我试图首先使用一个相对简单的测试来工作

jinja2 dbt
1个回答
0
投票

一切看起来都很好,除了当您定义

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
© www.soinside.com 2019 - 2024. All rights reserved.