Конфигурации тестов данных
Связанная документация
Тесты данных могут быть настроены несколькими способами:
- Свойства в определении
.yml(только для общих тестов, полную синтаксис смотрите в свойствах тестов) - Блок
config()в SQL-определении теста - В
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:
- Файл проекта
- Конфигурация SQL-файла
- Файл свойств
<resource_type>:
- name: <resource_name>
data_tests:
- <test_name>: # Фактическое имя теста. Например, dbt_utils.equality
name: # Человекочитаемое имя теста. Например, equality_fct_test_coverage
description: "markdown formatting"
arguments: # Доступно в версии v1.10.5 и выше. В более старых версиях <argument_name> можно указывать как свойство верхнего уровня.
<argument_name>: <argument_value>
config:
fail_calc: <string>
limit: <integer>
severity: error | warn
error_if: <string>
warn_if: <string>
store_failures: true | false
where: <string>
columns:
- name: <column_name>
data_tests:
- <test_name>:
name:
description: "markdown formatting"
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
<argument_name>: <argument_value>
config:
fail_calc: <string>
limit: <integer>
severity: error | warn
error_if: <string>
warn_if: <string>
store_failures: true | false
where: <string>
Этот механизм конфигурации поддерживается только для конкретных экземпляров общих тестов. Чтобы настроить конкретный отдельный тест, следует использовать макрос config() в его SQL-определении.
Общие конфигурации
Общие конфигурации предоставляют более широкие операционные настройки, применимые к нескольким типам ресурсов. Как и конфигурации, специфичные для ресурсов, они также могут быть заданы в файле проекта, файлах свойств или в файлах, специфичных для ресурсов.
- Файл проекта
- Конфигурация SQL-файла
- Файл свойств
<resource_type>:
- name: <resource_name>
data_tests:
- <test_name>: # Фактическое имя теста. Например, dbt_utils.equality
name: # Человекочитаемое имя теста. Например, equality_fct_test_coverage
description: "markdown formatting"
arguments: # доступно в версии v1.10.5 и выше. В более старых версиях <argument_name> можно задавать как свойство верхнего уровня.
<argument_name>: <argument_value>
config:
enabled: true | false
tags: <string> | [<string>]
meta: {dictionary}
# актуально только для store_failures
database: <string>
schema: <string>
alias: <string>
columns:
- name: <column_name>
data_tests:
- <test_name>:
name:
description: "markdown formatting"
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
<argument_name>: <argument_value>
config:
enabled: true | false
tags: <string> | [<string>]
meta: {dictionary}
# актуально только для store_failures
database: <string>
schema: <string>
alias: <string>
Этот механизм конфигурации поддерживается только для конкретных экземпляров общих тестов данных. Чтобы настроить конкретный отдельный тест, следует использовать макрос config() в его SQL-определении.
Примеры
Добавление тега к одному тесту
Если это конкретный экземпляр общего теста данных:
models:
- name: my_model
columns:
- name: id
data_tests:
- unique:
config:
tags: ['my_tag'] # changed to config in v1.10
Если это отдельный тест данных:
{{ config(tags = ['my_tag']) }}
select ...
Установка уровня серьезности по умолчанию для всех экземпляров общего теста данных
{% test my_test() %}
{{ config(severity = 'warn') }}
select ...
{% endtest %}
Отключение всех тестов данных из пакета
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:
- 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 теста описание задаётся в файле в директории тестов:
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.