Вступить в клуб →
сложнаявопросPython, витрины и качество данных

После перезапуска DAG за прошлую дату строки в витрине задвоились

Ежедневный DAG в Airflow наполняет витрину шагом:

INSERT INTO dm_orders_daily
SELECT order_date, channel, SUM(amount)
FROM stg_orders
WHERE order_date = '{{ ds }}'
GROUP BY order_date, channel;

В источнике нашли ошибку, перезалили staging и перезапустили задачу за три прошлых дня. Выручка за эти дни в дашборде удвоилась. В чём корень проблемы?

  • Достаточно включить retries и depends_on_past — тогда повторный запуск не выполнит вставку заново
  • Шаблон {{ ds }} при ручном перезапуске подставляет текущую дату вместо даты интервала
  • Шаг не идемпотентен: чистый INSERT добавляет строки поверх уже загруженных за эту дату
  • Нужно навесить на витрину уникальный ключ по дате и каналу и перехватывать ошибку вставки

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела