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

Косвенный выбор

Используйте флаг --indirect-selection для dbt test или dbt build, чтобы настроить, какие тесты запускать для указанных вами узлов. Вы можете установить это как флаг командной строки или переменную окружения. В dbt Core вы также можете настроить пользовательские конфигурации в YAML селекторах или в блоке flags: файла dbt_project.yml, который устанавливает флаги на уровне проекта.

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

  1. Конфигурации командной строки
  2. Переменные окружения
  3. Пользовательские конфигурации

Вы можете установить флаг на: empty, buildable, cautious или eager (по умолчанию). По умолчанию, dbt косвенно выбирает все тесты, если они касаются любого ресурса, который вы выбрали. Узнайте больше об этих опциях в Косвенный выбор в примерах выбора тестов.

Вы можете использовать следующие режимы для настройки поведения при выполнении косвенного выбора (по умолчанию используется режим eager). Исключение тестов всегда жадное: если ЛЮБОЙ родитель явно исключен, тест также будет исключен.

Создание подмножеств DAG

Режимы buildable и cautious могут быть полезны, когда вы строите только подмножество вашего DAG и хотите избежать сбоев тестов в режиме eager, вызванных не построенными ресурсами. Вы также можете достичь этого с помощью отложенного выполнения.

Режим Eager

По умолчанию запускает тесты, если любой из родительских узлов выбран, независимо от того, выполнены ли все зависимости. Это включает ЛЮБЫЕ тесты, которые ссылаются на выбранные узлы. Модели будут построены, если они зависят от выбранной модели. В этом режиме любые тесты, зависящие от не построенных ресурсов, вызовут ошибку.

Режим Buildable

Запускает только те тесты, которые ссылаются на выбранные узлы (или их предков). Этот режим немного более инклюзивен, чем cautious, включая тесты, ссылки которых находятся в пределах выбранных узлов (или их предков). Этот режим полезен, когда тест зависит от модели и прямого предка этой модели, например, для подтверждения, что агрегирование имеет те же итоги, что и его входные данные.

Режим Cautious

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

Режим Empty

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

Ниже представлена визуализация влияния --indirect-selection и различных флагов с использованием трех моделей, трех тестов и dbt build в качестве примера:

dbt builddbt build
Eager (по умолчанию)Eager (по умолчанию)
BuildableBuildable
CautiousCautious
EmptyEmpty

Например, вы можете запустить тесты, которые относятся только к выбранным узлам, используя конфигурацию командной строки:

Usage
dbt test --indirect-selection cautious

Или вы можете запустить тесты, которые относятся только к выбранным узлам, используя переменную окружения:

Env var

$ export DBT_INDIRECT_SELECTION=cautious
dbt run

Вы также можете запустить тесты, которые относятся только к выбранным узлам, используя флаги на уровне проекта в dbt_project.yml:

dbt_project.yml

flags:
indirect_selection: cautious

0