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

О команде 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. Это полезно, когда:

  1. Схема инкрементальной модели изменяется, и вам нужно ее воссоздать.
  2. Вы хотите перепроцессировать всю инкрементальную модель из-за новой логики в коде модели.
bash
dbt run --full-refresh

Вы также можете указать флаг его коротким именем: dbt run -f.

В контексте компиляции dbt этот флаг будет доступен как flags.FULL_REFRESH. Кроме того, макрос is_incremental() вернет false для всех моделей в ответ, когда указан флаг --full-refresh.

models/example.sql
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 — Пропущено

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

0
Loading