selection_filter_on
Когда вы передаёте селектор (--select, --exclude, --selector) в dbt check или dbt build, dbt использует его, чтобы определить, какие ресурсы проекта оценивает каждая проверка. selection_filter_on указывает dbt, какой столбец в результатах проверки содержит идентификаторы ресурсов для сопоставления с выборкой.
Значения
- По умолчанию (не задано): Если запрос возвращает
unique_id, dbt сохраняет только строки, у которыхunique_idвходит в выборку. Если запрос не возвращаетunique_id, проверка выполняется для всего проекта. Это полезно для агрегатных проверок, например «в проекте есть хотя бы одна модель». none: Проверка всегда выполняется для всего проекта, игнорируя любые селекторы. Используйте это значение, чтобы явно задать проверку всего проекта.- Имя столбца или список имён столбцов: dbt сохраняет строку, если идентификатор хотя бы в одном из указанных столбцов входит в выборку. Каждый указанный столбец должен присутствовать в результате, иначе проверка завершится с ошибкой. Используйте этот вариант для проверок, которые возвращают связи между ресурсами (рёбра).
Когда задавать эту настройку
Если ваша проверка возвращает столбец unique_id, задавать эту настройку не нужно.
Используйте selection_filter_on, если ваша проверка возвращает строки со столбцами идентификаторов, отличными от unique_id. Укажите в этой настройке столбцы, содержащие идентификаторы ресурсов, чтобы селекторы могли ограничивать набор строк по этим столбцам.
Следующая проверка запрашивает таблицу edges и возвращает child_unique_id вместо unique_id, поэтому необходимо задать selection_filter_on:
select child_unique_id, count(*) as source_parents
from {{ info_schema('edges') }}
where parent_unique_id like 'source.%'
group by child_unique_id
having count(*) > 1
Настройте selection_filter_on для этой проверки одним из следующих способов:
- YAML-файл проекта
- YAML-файл свойств
- Настройка в SQL-файле
checks:
+selection_filter_on: child_unique_id
version: 2
checks:
- name: multiple_sources_joined
description: "Проверка завершается неудачей, если какая-либо модель читает данные напрямую более чем из одного источника."
config:
selection_filter_on: child_unique_id
{{ config(
selection_filter_on = "child_unique_id"
) }}