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

Обзор синтаксиса

Синтаксис выбора узлов в dbt позволяет запускать только определенные ресурсы в конкретном вызове dbt. Этот синтаксис выбора используется для следующих подкоманд:

командааргумент(ы)
run--select, --exclude, --selector, --defer
test--select, --exclude, --selector, --defer
seed--select, --exclude, --selector
snapshot--select, --exclude --selector
ls (list)--select, --exclude, --selector, --resource-type
compile--select, --exclude, --selector, --inline
freshness--select, --exclude, --selector
build--select, --exclude, --selector, --resource-type, --defer
docs generate--select, --exclude, --selector
Loading table...
Узлы и ресурсы

Мы используем термины "узлы" и "ресурсы" взаимозаменяемо. Они охватывают все модели, тесты, источники, семена, снимки, экспозиции и анализы в вашем проекте. Это объекты, которые составляют DAG (ориентированный ациклический граф) dbt.

Аргументы --select и --selector похожи тем, что оба позволяют выбирать ресурсы. Чтобы понять разницу между ними, см. Differences between --select and --selector.

Указание ресурсов

По умолчанию, dbt run выполняет все модели в графе зависимостей; dbt seed создает все семена, dbt snapshot выполняет каждый снимок. Флаг --select используется для указания подмножества узлов для выполнения.

Чтобы следовать стандартам POSIX и упростить понимание, мы рекомендуем пользователям CLI использовать кавычки при передаче аргументов в опции --select или --exclude (включая один или несколько аргументов, разделенных пробелами или запятыми). Неиспользование кавычек может не работать надежно на всех операционных системах, терминалах и пользовательских интерфейсах. Например, dbt run --select "my_dbt_project_name" запускает все модели в вашем проекте.

Как работает выбор?

  1. dbt собирает все ресурсы, которые соответствуют одному или нескольким критериям --select, в порядке методов выбора (например, tag:), затем операторов графа (например, +), и, наконец, операторов множеств (объединения, пересечения, исключения).

  2. Выбранные ресурсы могут быть моделями, источниками (sources), сид-таблицами (seeds), снапшотами (snapshots), тестами (tests). (Тесты также могут выбираться «косвенно» через их родительские объекты; подробнее см. примеры выбора тестов.)

  3. Теперь у dbt есть список все еще выбранных ресурсов различных типов. На последнем этапе он отбрасывает любой ресурс, который не соответствует типу ресурса текущей задачи. (Только семена сохраняются для dbt seed, только модели для dbt run, только тесты для dbt test и так далее.)

Сокращения

Выберите ресурсы для сборки (запуска, тестирования, семени, снимка) или проверки свежести: --select, -s

Примеры

По умолчанию, dbt run выполнит все модели в графе зависимостей. Во время разработки (и развертывания) полезно указать только подмножество моделей для запуска. Используйте флаг --select с dbt run, чтобы выбрать подмножество моделей для запуска. Обратите внимание, что следующие аргументы (--select, --exclude и --selector) также применимы к другим задачам dbt, таким как test и build.

Флаг --select принимает один или несколько аргументов. Каждый аргумент может быть одним из:

  1. имя пакета
  2. имя модели
  3. полностью квалифицированный путь к каталогу моделей
  4. метод выбора (path:, tag:, config:, test_type:, test_name:)

Примеры:

dbt run --select "my_dbt_project_name"   # запускает все модели в вашем проекте
dbt run --select "my_dbt_model" # запускает конкретную модель
dbt run --select "path/to/my/models" # запускает все модели в конкретном каталоге
dbt run --select "my_package.some_model" # запускает конкретную модель в конкретном пакете
dbt run --select "tag:nightly" # запускает модели с тегом "nightly"
dbt run --select "path/to/models" # запускает модели, содержащиеся в path/to/models
dbt run --select "path/to/my_model.sql" # запускает конкретную модель по ее пути

Когда ваша логика выбора становится более сложной и неудобной для ввода в виде аргументов командной строки, рассмотрите возможность использования yaml-селектора. Вы можете использовать предопределенное определение с флагом --selector. Обратите внимание, что при использовании --selector большинство других флагов (а именно --select и --exclude) будут игнорироваться.

Аргументы --select и --selector похожи тем, что оба позволяют выбирать ресурсы. Чтобы понять разницу между аргументами --select и --selector, см. этот раздел с более подробным объяснением.

Диагностика с помощью команды ls

Создание и отладка вашего синтаксиса выбора может быть сложной задачей. Чтобы получить "предварительный просмотр" того, что будет выбрано, мы рекомендуем использовать команду list. Эта команда, в сочетании с вашим синтаксисом выбора, выведет список узлов, которые соответствуют этим критериям выбора. Команда dbt ls поддерживает все типы аргументов синтаксиса выбора, например:

dbt ls --select "path/to/my/models" # Список всех моделей в конкретном каталоге.
dbt ls --select "source_status:fresher+" # Показывает источники, обновленные с момента последнего запуска dbt source freshness.
dbt ls --select state:modified+ # Отображает узлы, измененные по сравнению с предыдущим состоянием.
dbt ls --select "result:<status>+" state:modified+ --state ./<dbt-artifact-path> # Список узлов, которые соответствуют определенным статусам результата и изменены.

Вопросы от сообщества

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

0
Loading