Как устроить DAG ежедневной загрузки
Вопрос
Расскажите, как вы устроите в Airflow ежедневную загрузку данных из PostgreSQL сервиса заказов в хранилище с построением витрин.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Расписание, интервалы, явный catchup, ретраи с паузой
Выгрузка за интервал в сырой слой, без нагрузки на прод (реплика, ограничение параллелизма)
Проверки качества после загрузки: объём, ключи, свежесть
Трансформации в хранилище (dbt), идемпотентная перезапись
Зависимость витрин по готовности данных, а не по времени
SLA, алерты, подключения и секреты вне кода
Что могут спросить следом
- Как вы будете перегружать данные за прошлый месяц?
- Что сделаете, если выгрузка стала идти 6 часов?
Разбор
Образцовый ответ: «DAG ежедневный, catchup задаю явно, ретраи с экспоненциальной паузой. Первая задача выгружает изменения за интервал из реплики, а не из боевой базы, с пулом, ограничивающим параллельные запросы к источнику, и кладёт файлы в сырой слой по партиции даты. Дальше загрузка в staging и проверки: число строк в разумных пределах, уникальность ключей, отсутствие NULL в обязательных полях. Если проверки падают, витрины не строятся и приходит алерт. Трансформации запускаю как dbt-модели в хранилище, все с перезаписью партиции, поэтому бэкфилл это просто clear за нужные даты. Витрины зависят от готовности данных через assets или сенсор, а не от времени. Пароли в Connections или во внешнем хранилище секретов. Есть SLA на готовность витрин к 8 утра с алертом».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.