Что такое DAG в Airflow
Что проверяют
Видите ли вы в Airflow планировщик, а не место, где лежат скрипты. DAG описывает, из каких задач состоит регламентный расчёт и в каком порядке они идут. Дальше разговор почти всегда уходит в расписание, повторные запуски и идемпотентность, потому что витрины ломаются именно там.
Как отвечать
DAG это направленный ациклический граф задач: узлы это операторы, рёбра это зависимости, циклов нет, иначе порядок выполнения не определён. Файл с DAG это код на Python, который планировщик периодически перечитывает: он строит граф, а не выполняет задачи.
Стоит назвать: расписание и интервал, за который считается запуск; retries и таймауты на уровне задачи; сенсоры для ожидания внешних данных; пулы и ограничение параллелизма, чтобы не положить источник; XCom для маленьких значений между задачами, но не для данных. В современных версиях граф чаще описывают декораторами, и зависимости выводятся из вызовов функций.
Цикл в графе это не стилистическая придирка: файл с циклом Airflow не загрузит, задачи такого графа просто не появятся в интерфейсе.
extract() >> transform() >> load()Отдельно проговорите, что задача должна быть повторяемой: Airflow сам перезапускает упавшее и позволяет прогнать историю заново.
Где спотыкаются
Пишут неидемпотентные задачи: повторный запуск за тот же интервал дублирует строки. Задача должна перезаписывать свою партицию, а не дописывать в конец, иначе любой ретрай портит витрину.
Кладут тяжёлый код на верхний уровень файла: запросы к базе, чтение конфигов по сети, обход каталога. Этот код выполняется при каждом разборе файла планировщиком, а не при запуске задачи, и Airflow начинает тормозить целиком.
Считают внутри задачи по текущей дате. Брать нужно дату интервала, за который идёт запуск, иначе перезаливка истории посчитает все периоды сегодняшним днём и тихо всё перепишет.