Обзор синтаксиса
Синтаксис выбора узлов в 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> # Список узлов, которые соответствуют определенным статусам результата и изменены.