ЦБ ETL
Задача Каждый день забирать курсы валют ЦБ РФ, хранить историю и считать по ней витрины. Так, чтобы повторный запуск и догрузка прошлых дней ничего не ломали.
Тесты на pytest. CI в GitHub Actions поднимает PostgreSQL и прогоняет их на каждый push.
Код на GitHub- ИсточникAPI ЦБ РФ
- Rawraw_rates, JSONB как пришло
- Corerates, строка на дату и валюту
- Витриныизменение за день, среднее за 7 дней, волатильность
- Проверки6 SQL-проверок, итог в dq_log
-
Идемпотентность
Upsert по ключу «дата + валюта»: повторный запуск обновляет строки, а не плодит дубли. Сырой ответ и разобранные строки пишу одной транзакцией.
-
Бэкфилл
Флаг
--backfill Nдогружает последние N дней. Упавшая дата не останавливает остальные, но процесс вернёт код 1, чтобы планировщик это увидел. -
Проверки качества
После каждой загрузки: свежесть, пропуски публикаций, скачки курса, смена номинала. Проверка уровня error завершает запуск с ошибкой.