Тестовое задание на ревьюера в Яндекс.Практикум.
ETL-процесс по выгрузке курса Биткоина к доллару на базе Apache Airflow.
Данные о курсе валютной пары берутся из API exchangerate.host и складываются в Постгрес каждые три часа.
При первом запуске процесса будут загружены исторические данные (начиная с 2022-01-01).
- Apache Airflow 2.2.4;
- Python 3.8;
- Postgres 13 (для бэкенда Эирфлоу и для хранения данных о курсах валют).
ETL-процесс реализован в виде ДАГа btc_usd
, состоящего из двух тасок:
extract_rate
: делает запрос на эндпоинт/convert
, передавая шаблонexecution_date
в качестве даты.load_rate
: загружает данные в таблицуexchange_rates
с использованиемPostgresOperator
.
Таблица exchange_rates
создается при поднятии контейнера хранилища. DDL-запрос для её создания находится в scripts/init.sql
.
Для запуска потребуется Докер.
Поднимите окружение:
make start
После выполнения команды и поднятия всех контейнеров может понадобиться подожать несколько минут для запуска веб-сервера и шедулера.
Перейдите на localhost:8080
. В качестве логина и пароля используйте airflow/airflow
.
Запустите ДАГ btc_usd
.
Чтобы посмотреть результат, зайдите в контейнер хранилища:
make storage
Внутри контейнера можно выполнить запрос к таблице exchange_rates
:
SELECT * FROM exchange_rates ORDER BY date;
Чтобы остановить и удалить контейнеры, удалить вольюмы и образы:
make clean