Airflow: DAG, прогоны и DQ-гейт

Два DAG-а платформы отчётности на Apache Airflow 3, каждый по шаблону fetch → validate → write → record_metrics. Показан представительный — daily_sales_report (второй, weekly_sales_summary, идёт по тому же шаблону, 3 прогона внизу). Кликните таск, чтобы увидеть его роль; переключатель наборов прогонов пересчитывает тренд и KPI.

daily_sales_report · 4 таска · @daily

Пунктирный блок — источник, а не таск DAG. Цепочка линейная: у каждого шага один вход и один выход, поэтому «выше/ниже» в панели считает позицию в этом графе.

Прогоны · диапазон выходов 31.08–05.09.2026

Записанный провал (E2E, 2026-09-05)

3 попытки = исходная + 2 retry по DEFAULT_ARGS (retries=2, retry_delay=5 мин) — провал в validate_data. Это отдельный ран, а не неудача дневного прогона за 05.09.

DQ-гейт · shared/dq.py:17

    Проверки идут до записи: таск validate_data вызывает validate_or_raise (shared/dq.py:75). Нарушение → ValueError, нет строк за окно → NoDataError. Все 8 файлов в data/out/ написаны после прохождения гейта — иначе записи не было бы.

    Проверки EDA поверх выходов (в гейт не входят)

      Это проверки отчёта reports/eda/findings.md по уже записанным CSV, а не шаги DAG. Они ловят то, что гейт по построению не видит: непрерывность периодов.

      Выход пайплайна · data/out/sales_report_*.csv

      выручка за сутки, млн ₽ · под датой — строк записано

      weekly_sales_summary · @weekly · 3 success