О команде dbt run
Обзор
Команда dbt run применяется только к моделям. Она не запускает тесты, снапшоты, сиды или другие типы ресурсов. Для запуска этих операций используйте соответствующие команды dbt, описанные в разделе dbt commands, — например, dbt test, dbt snapshot или dbt seed.
В качестве альтернативы можно использовать dbt build с селектором типа ресурса.
Команду dbt run имеет смысл использовать, когда вам нужно построить или перестроить модели в вашем проекте.
Как работает dbt run?
dbt runвыполняет скомпилированные SQL-файлы моделей в текущей базе данныхtarget.- dbt подключается к целевой базе данных и выполняет соответствующий SQL, необходимый для материализации всех моделей данных с использованием указанных стратегий materialization.
- Модели выполняются в порядке, определённом графом зависимостей, сформированным на этапе компиляции. Для минимизации времени выполнения используется интеллектуальная многопоточность без нарушения зависимостей.
- При деплое новых моделей часто требуется удалить предыдущие версии этих моделей. В таких случаях
dbt runминимизирует простой, сначала создавая каждую модель с временным именем, а затем выполняя удаление и переименование в рамках одной транзакции (для адаптеров, поддерживающих транзакции).
Обновление инкрементальных моделей
Если вы укажете флаг --full-refresh для dbt run, dbt будет обрабатывать инкрементальные модели как модели table. Это полезно, когда:
- Схема инкрементальной модели изменяется, и вам нужно ее воссоздать.
- Вы хотите перепроцессировать всю инкрементальную модель из-за новой логики в коде модели.
dbt run --full-refresh
Вы также можете указать флаг его коротким именем: dbt run -f.
В контексте компиляции dbt этот флаг будет доступен как flags.FULL_REFRESH. Кроме того, макрос is_incremental() вернет false для всех моделей в ответ, когда указан флаг --full-refresh.
select * from all_events
-- если таблица уже существует и `--full-refresh` не установлен,
-- то добавляются только новые записи. в противном случае выбираются
-- все записи.
{% if is_incremental() %}
where collector_tstamp > (
select coalesce(max(max_tstamp), '0001-01-01') from {{ this }}
)
{% endif %}
Запуск конкретных моделей
dbt также позволяет выбрать, какие конкретные модели вы хотите материализовать. Это может быть полезно в особых сценариях, когда вы предпочитаете запускать другой набор моделей в различные интервалы. Это также может быть полезно, когда вы хотите ограничить материализуемые таблицы, пока вы разрабатываете и тестируете новые модели.
Для получения дополнительной информации см. Документацию по синтаксису выбора моделей.
Для получения дополнительной информации о запуске родительских или дочерних моделей см. Документацию по операторам графа.
Обработка предупреждений как ошибок
Быстрое завершение при ошибках
Включение или отключение цветных логов
Флаг --empty
Команда run поддерживает флаг --empty для построения сухих запусков только со схемой. Флаг --empty ограничивает ссылки и источники до нуля строк. dbt все равно выполнит SQL модели в целевом хранилище данных, но избежит дорогостоящих чтений входных данных. Это проверяет зависимости и гарантирует, что ваши модели будут правильно построены.
Коды состояния
При вызове api list_runs вы получите код статуса для каждого выполнения. Доступные коды статуса выполнения следующие:
- Queued = 1 — В очереди
- Starting = 2 — Запускается
- Running = 3 — Выполняется
- Success = 10 — Успешно завершено
- Error = 20 — Ошибка
- Canceled = 30 — Отменено
- Skipped = 40 — Пропущено