О команде dbt run
Обзор
dbt run
выполняет скомпилированные SQL-файлы моделей в текущей целевой базе данных. dbt подключается к целевой базе данных и выполняет соответствующий SQL, необходимый для материализации всех моделей данных, используя указанные стратегии . Модели выполняются в порядке, определенном графом зависимостей, сгенерированным во время компиляции. Интеллектуальное многопоточность используется для минимизации времени выполнения без нарушения зависимостей.
Развертывание новых моделей часто включает уничтожение предыдущих версий этих моделей. В таких случаях dbt run
минимизирует время, в течение которого модель недоступна, сначала создавая каждую модель с временным именем, затем удаляя существующую модель и переименовывая модель в ее правильное имя. Удаление и переименование происходят в рамках одной транзакции базы данных для адаптеров баз данных, которые поддерживают транзакции.
Обновление инкрементальных моделей
Если вы укажете флаг --full-refresh
для dbt run
, dbt будет обрабатывать инкрементальные модели как модели . Это полезно, когда:
- Схема инкрементальной модели изменяется, и вам нужно ее воссоздать.
- Вы хотите перепроцессировать всю инкрементальную модель из-за новой логики в коде модели.
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 также позволяет выбрать, какие конкретные модели вы хотите материализовать. Это может быть полезно в особых сценариях, когда вы предпочитаете запускать другой набор моделей в различные интервалы. Это также может быть полезно, когда вы хотите ограничить материализуемые таблицы, пока вы разрабатываете и тестируете новые модели.
Для получения дополнительной информации см. Документацию по синтаксису выбора моделей.
Для получения дополнительной информации о запуске родительских или дочерних моделей см. Документацию по операторам графа.