Airflow: пайплайны и оркестрация данных

Вы соберёте пайплайн на Airflow 3, который безопасно перезапускать за любой день, и сдадите его проверке без задвоенных строк в таблице. Пайплайны на cron с ручными перезапусками дают дубли и пропуски, а о сбое узнают от пользователей. Ставить ничего не нужно: лабораторные идут в браузере на настоящем Airflow 3.3 с живым терминалом.

Чему вы научитесь

Сколько запусков создаст перезапуск окна дат?

Окно со 2 по 6 ноября, расписание по будням в 02:00, и в выводе четыре запуска, а не пять. Пятая дата не попала за правую границу. Такое лучше увидеть до перезапуска, а не после.

Тот же вопрос про catchup: DAG со start_date в январе, включённый в ноябре с catchup=True, создаёт около 315 запусков сразу. В курсе вы сначала смотрите, что запланирует Airflow, и только потом запускаете.

Что нужно знать

Python на уровне функций, модулей и декораторов

Базовый SQL: SELECT, INSERT, GROUP BY

Знать Airflow заранее не нужно

Какой день обработает запуск 10 марта?

Суточный DAG стартует после конца интервала: данные за 9 марта целиком появляются к полуночи 10-го. Вывод airflow dags test показывает все четыре времени рядом, и вы сами видите, чем ds отличается от начала интервала.

Поэтому задача, которая берёт «вчера» через datetime.now(), после перезапуска через неделю пишет не тот день. Лабораторная проверяет ваш DAG на двух датах, которых в условии нет: зашитая дата не пройдёт.

Где идемпотентная запись перестаёт работать

Три строки заказов на сумму 37.75 после двойного запуска с обычным INSERT превращаются в шесть строк на 75.5. Ошибки при этом нет, просто отчёт врёт. Ретраи делают такой двойной запуск обычным делом.

Курс показывает и границу решения: INSERT OR REPLACE не удаляет строки, которых в новом источнике уже нет. Если источник могут исправить в меньшую сторону, нужна перезапись партиции в одной транзакции.

Что сдаёте по результатам

Каждая лабораторная принимается проверкой, а не самооценкой. Проверка запускает ваш DAG командой airflow dags test, смотрит на состояния задач, созданные файлы и содержимое sqlite, а для идемпотентности запускает загрузку повторно и сравнивает число строк и контрольную сумму.

Итоговая работа: пайплайн ETL на файлах и sqlite. Он не загружается, потом падает на данных, потом дублирует строки при ретрае. Вы чините причины по очереди и добавляете pytest, который не даст им вернуться.

Для кого

Инженерам данных, которые переводят скрипты по cron в пайплайны с историей запусков

Бэкенд-разработчикам, которым поручили регулярные загрузки и отчёты

DevOps-инженерам, которые сопровождают чужие DAG и разбирают ночные падения

Поддержка

Вы также можете задать любой вопрос по курсу у поддержки t.me/mentorix_support

Программа курса

Модулей: 7, уроков: 31. Задачи с кодом проверяются автоматически.

  1. Первый DAG и рабочий процесс

  2. TaskFlow, XCom, connections

  3. Зависимости, ветвление, надёжность

  4. Расписание, интервалы, идемпотентность

  5. Сенсоры, динамический маппинг, assets

  6. Тестирование и отладка DAG

  7. Проект: ETL на файлах и sqlite

Стоимость курса: 5990 ₽

Открыть курс на Mentorix · Все курсы