Ночью 3 октября загрузка «Гонца» упала на последней минуте: сеть моргнула, и Airflow, как мы и настроили, повторил задачу. Утром Отто увидел, что 3 октября «Гонец» заработал в два раза больше обычного. Никакого чуда: повтор дописал заказы дня во второй раз. А через неделю бухгалтерия попросит перезалить первую неделю октября, и это будет третий раз. Повторы и перезаливки у дата-инженера случаются постоянно, поэтому каждая задача должна их переживать.
Кнопка лифта
Ты вызываешь лифт и жмёшь кнопку. Лифт не едет, и ты жмёшь ещё три раза. Приедет всё равно один лифт: повторное нажатие ничего не меняет, кнопка уже горит.
А теперь представь, что каждое нажатие вызывает отдельный лифт. Нервный пассажир собрал бы у своего этажа все лифты дома.
Кнопка лифта идемпотентна: сколько ни нажимай, результат один. Задача пайплайна должна быть такой же: запусти её за 3 октября один раз или пять, в хранилище окажутся одни и те же заказы.
Посмотри сам
Две загрузки одного дня, 1 июня, обе запущены дважды. Первая просто дописывает строки. Вторая сначала удаляет строки своего дня, потом вставляет заново, и всё это в одной транзакции.
Загрузка дня, запущенная дважды
База · courier
База загрузится, когда ты выполнишь запрос или откроешь таблицы.
Выполни запрос, чтобы увидеть результат.
Выбери доступную таблицу для просмотра данных и структуры.
Выбери доступную таблицу для просмотра данных и структуры.
Выполни весь запрос кнопкой или Ctrl/Cmd+Enter. Ctrl+Space открывает подсказки. Можно писать несколько команд через точку с запятой, менять данные и открывать транзакции. У каждой песочницы своя база, изменения живут до ухода со страницы. «Сбросить базу» возвращает учебные данные, но не меняет SQL.
В наивной таблице 666 строк и выручка 141 390 рублей, ровно вдвое больше настоящей. Во второй 333 строки и 70 695 рублей, сколько бы раз ни выполнить блок между BEGIN и COMMIT. Попробуй скопировать его ещё пару раз и проверь.
урок из курса
Урок из курса «Data Engineering». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.