В Airflow есть две важные концепции, которые необходимо хорошо понимать: Backfill и Catchup.
Как вы уже знаете, запуски DAGов (DagRuns) рассчитываются на основе start_date + schedule_interval, также опционально можно указать end_date (последний период запусков). По умолчанию планировщик Airflow поставит в расписание все периоды начиная со start_date + schedule_interval и до end_date (или текущего времени) как только вы активируете DAG в веб-панели.
На примере New York Yellow Taxi начало периода это 1 января 2020 года, интервал запусков — раз в месяц, end_date не указан. На момент написания этих строк на дворе март 2021 года. Это значит, что всего периодов запуска будет 14: весь 2020 год (12 запусков) + 2 запуска за 2021 года (январь и февраль). Они будут запланированы моментально после активации DAG. Чтобы изменить это поведение необходимо в настройках конкретного DAG прописать catchup=False:
@dag(default_args=default_args,
schedule_interval='@monthly',
start_date=datetime(2020, 1, 1),
catchup=False,
)
...
В этом случае будет запланирован лишь последний запуск — для марта 2021 года это будет запуск за февраль 2021 (execution_date = 2021-02-01
)
Также catchup можно запретить для всех DAG, если в файле конфигурации airflow.cfg найти параметр catchup_by_default и изменить значение на False:
catchup_by_default = False