Обзор синтаксиса
Синтаксис выбора узлов в 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 |
Мы используем термины "узлы" и "ресурсы" взаимозаменяемо. Они охватывают все модели, тесты, источники, семена, снимки, экспозиции и анализы в вашем проекте. Это объекты, которые составляют DAG (ориентированный ациклический граф) dbt.
Указание ресурсов
По умолчанию, dbt run выполняет все модели в графе зависимостей; dbt seed создает все семена, dbt snapshot выполняет каждый снимок. Флаг --select используется для указания подмножества узлов для выполнения.
Чтобы следовать стандартам POSIX и упростить понимание, мы рекомендуем пользователям CLI использовать кавычки при передаче аргументов в опции --select или --exclude (включая один или несколько аргументов, разделенных пробелами или запятыми). Неиспользование кавычек может не работать надежно на всех операционных системах, терминалах и пользовательских интерфейсах. Например, dbt run --select "my_dbt_project_name" запускает все модели в вашем проекте.
Как работает выбор?
-
dbt собирает все ресурсы, которые соответствуют одному или нескольким критериям
--select, в порядке методов выбора (например,tag:), затем операторов графа (например,+), и, наконец, операторов множеств (объединения, пересечения, исключения). -
Выбранные ресурсы могут быть моделями, источниками, семенами, снимками, тестами. (Тесты также могут быть выбраны "косвенно" через их родительские элементы; см. примеры выбора тестов для подробностей.)
-
Теперь у dbt есть список все еще выбранных ресурсов различных типов. На последнем этапе он отбрасывает любой ресурс, который не соответствует типу ресурса текущей задачи. (Только семена сохраняются для
dbt seed, только модели дляdbt run, только тесты дляdbt testи так далее.)
Сокращения
Выберите ресурсы для сборки (запуска, тестирования, семени, снимка) или проверки свежести: --select, -s
Примеры
По умолчанию, dbt run выполнит все модели в графе зависимостей. Во время разработки (и развертывания) полезно указать только подмножество моделей для запуска. Используйте флаг --select с dbt run, чтобы выбрать подмножество моделей для запуска. Обратите внимание, что следующие аргументы (--select, --exclude и --selector) также применимы к другим задачам dbt, таким как test и build.
- Примеры флага select
- Примеры подмножеств узлов
Флаг --select принимает один или несколько аргументов. Каждый аргумент может быть одним из:
- имя пакета
- имя модели
- полностью квалифицированный путь к каталогу моделей
- метод выбора (
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" # запускает конкретную модель по ее пути
dbt поддерживает сокращенный язык для определения подмножеств узлов. Этот язык использует следующие символы:
Примеры:
# несколько аргументов могут быть переданы в --select
dbt run --select "my_first_model my_second_model"
# выбрать my_model и всех его потомков
dbt run --select "my_model+"
# выбрать my_model, его потомков и родителей его потомков
dbt run --models @my_model
# эти аргументы могут быть проектами, моделями, путями к каталогам, тегами или источниками
dbt run --select "tag:nightly my_model finance.base.*"
# используйте методы и пересечения для более сложных селекторов
dbt run --select "path:marts/finance,tag:nightly,config.materialized:table"
Когда ваша логика выбора становится более сложной и неудобной для ввода в виде аргументов командной строки, рассмотрите возможность использования yaml-селектора. Вы можете использовать предопределенное определение с флагом --selector. Обратите внимание, что при использовании --selector большинство других флагов (а именно --select и --exclude) будут игнорироваться.
Устранение неполадок с командой 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> # Список узлов, которые соответствуют определенным статусам результата и изменены.