Главное моё требование — чтобы этот механизм работал предсказуемо и не портил данные исподтишка. Там, где источник позволяет, хочу инкрементальную догрузку вместо полной перезаписи: переносим только то, что реально поменялось, и задания остаются быстрыми даже при росте объёмов. На каждом прогоне должны отрабатывать контроли качества, отлавливающие пустые поля, неверные типы, повторяющиеся ключи и строки, которые не проходят по нашим правилам; при таких находках система обязана присылать внятное уведомление, а не тихо заливать брак в хранилище. Отдельно прошу про идемпотентность: если задание оборвалось на полпути и стартует повторно, оно не должно ни удваивать записи, ни оставлять хранилище наполовину заполненным.
Отдельно попрошу описать соответствия полей источников и логику преобразований, чтобы после передачи мои сотрудники могли всё сопровождать сами, и настроить автозапуск по расписанию без моего ручного участия. Подскажите заодно, какой стек вы предложите и по какой причине.
— Забор данных из нескольких источников: базы SQL, REST API и еженедельные CSV
— Приведение и очистка записей к единой схеме без повторов
— Складирование в общее хранилище со слоем staging и финальным слоем
— Инкрементальная догрузка по изменённым строкам вместо полной перезаписи
— Автоматические контроли качества данных с уведомлениями о сбоях
— Перезапускаемые идемпотентные задания по расписанию и документация при передаче