Раздел 26 · Data Engineering

Backfill: перезаливка истории

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Пайплайн «Гонца» выложили 8 октября с catchup=False, как и положено в Airflow 3 по умолчанию, мы это разбирали. Планировщик создал один запуск, за 7 октября. А бухгалтерии нужна вся первая неделя: с 1 октября у курьеров новые тарифы. Через месяц найдётся ошибка в чистке, и неделю придётся пересчитать снова. Прогонять DAG за прошлые даты это обычная работа дата-инженера, и у неё есть имя.

Перепечатать газету

Газета вышла с опечаткой в курсе валют, и так все семь номеров за неделю. Редакция не пишет газету заново. Она берёт номер за понедельник, правит курс и печатает тираж за понедельник, потом за вторник, и так всю неделю. Каждый номер собирается из новостей своего дня, а не сегодняшних. Иначе понедельничный номер вышел бы с новостями воскресенья.

Backfill это перепечатка газеты за прошлые дни. Airflow создаёт запуски DAG за прошлые моменты расписания, и каждый запуск обрабатывает свой день, как если бы расписание сработало тогда.

Команда

В Airflow 3 backfill выполняет сам планировщик, а создаётся он командой:

airflow backfill create --dag-id gonets_daily \
  --from-date 2026-10-01 --to-date 2026-10-07

Границы включительно и считаются по logical_date. Полезные флаги:

  • --dry-run печатает, какие даты будут запущены, и ничего не делает. Всегда начинай с него;
  • --reprocess-behavior решает, что делать с датами, где запуск уже есть: none пропустить (по умолчанию), failed перезапустить только упавшие, completed перезапустить все.

В статьях про Airflow 2 встречается команда airflow dags backfill. В Airflow 3 её нет.

урок из курса

Урок из курса «Data Engineering». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.