Перейти к основному содержимому

Конфигурации тестов данных

Тесты данных могут быть настроены несколькими способами:

  1. Свойства в определении .yml (только для общих тестов, полную синтаксис смотрите в свойствах тестов)
  2. Блок config() в SQL-определении теста
  3. В dbt_project.yml

Конфигурации тестов данных применяются иерархически, в порядке возрастания специфичности, описанном выше. В случае singular‑теста блок config() внутри SQL‑определения имеет приоритет над конфигурациями, заданными в YAML‑файле проекта. В случае конкретного экземпляра generic‑теста свойства теста, указанные в его .yml‑файле, имеют приоритет над любыми значениями, заданными в config() его обобщённого SQL‑определения, которые, в свою очередь, имеют приоритет над значениями, указанными в YAML‑файле проекта (dbt_project.yml).

Доступные конфигурации

Нажмите на ссылку каждой опции конфигурации, чтобы узнать больше о её возможностях.

Конфигурации, специфичные для тестов данных

Конфигурации, специфичные для ресурса, применимы только к одному типу ресурса dbt, а не к нескольким типам ресурсов. Вы можете определить эти настройки в файле проекта (dbt_project.yml), в файле свойств (models/properties.yml для моделей, аналогично для других ресурсов) или внутри файла ресурса, используя макрос {{ config() }}.

Следующие конфигурации, специфичные для ресурса, доступны только для Data tests:

dbt_project.yml
data_tests:
<resource-path>:
+fail_calc: <string>
+limit: <integer>
+severity: error | warn
+error_if: <string>
+warn_if: <string>
+store_failures: true | false
+where: <string>

Общие конфигурации

Общие конфигурации предоставляют более широкие операционные настройки, применимые к нескольким типам ресурсов. Как и конфигурации, специфичные для ресурсов, они также могут быть заданы в файле проекта, файлах свойств или в файлах, специфичных для ресурсов.

dbt_project.yml
data_tests:
<resource-path>:
+enabled: true | false
+tags: <string> | [<string>]
+meta: {dictionary}
# актуально только для store_failures
+database: <string>
+: <string>
+alias: <string>

Примеры

Добавление тега к одному тесту

Если это конкретный экземпляр общего теста данных:

models/<filename>.yml
models:
- name: my_model
columns:
- name: id
data_tests:
- unique:
config:
tags: ['my_tag'] # changed to config in v1.10

Если это отдельный тест данных:

tests/<filename>.sql
{{ config(tags = ['my_tag']) }}

select ...

Установка уровня серьезности по умолчанию для всех экземпляров общего теста данных

macros/<filename>.sql
{% test my_test() %}

{{ config(severity = 'warn') }}

select ...

{% endtest %}

Отключение всех тестов данных из пакета

dbt_project.yml
data_tests:
package_name:
+enabled: false

Указание пользовательских конфигураций для общих тестов данных

Начиная с dbt v1.9, вы можете использовать любой пользовательский ключ конфигурации для указания пользовательских конфигураций для тестов данных. Например, следующее указывает пользовательскую конфигурацию snowflake_warehouse, которую dbt должен использовать при выполнении теста данных accepted_values:


models:
- name: my_model
columns:
- name: color
data_tests:
- accepted_values:
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
values: ['blue', 'red']
config:
severity: warn
snowflake_warehouse: my_warehouse

При такой конфигурации data test выполняется на другом виртуальном складе Snowflake, а не на том, который указан в вашем подключении по умолчанию. Это позволяет добиться лучшего соотношения цены и производительности за счёт использования склада другого размера или более детального распределения и прозрачности затрат.

Добавление описания к generic и singular тестам

Начиная с dbt v1.9 (также доступно в dbt release tracks), вы можете добавлять описания как к generic, так и к singular тестам.

Для generic теста описание добавляется непосредственно в существующий YAML:

models/staging/<filename>.yml
models:
- name: my_model
columns:
- name: delivery_status
data_tests:
- accepted_values:
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
values: ['delivered', 'pending', 'failed']
description: "This test checks whether there are unexpected delivery statuses. If it fails, check with logistics team"

Также можно добавлять описания непосредственно в Jinja‑макрос, который реализует основную логику generic data test. Подробнее см. в разделе Add description to generic data test logic.

Для singular теста описание задаётся в файле в директории тестов:

tests/my_custom_test.yml
data_tests: 
- name: my_custom_test
description: "This test checks whether the rolling average of returns is inside of expected bounds. If it isn't, flag to customer success team"

Дополнительную информацию см. в разделе Add a description to a data test.

Нашли ошибку?

0
Loading