После перезапуска 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 добавляет строки поверх уже загруженных за эту дату
- Нужно навесить на витрину уникальный ключ по дате и каналу и перехватывать ошибку вставки
