btc-usd

Тестовое задание на ревьюера в Яндекс.Практикум.

Описание

ETL-процесс по выгрузке курса Биткоина к доллару на базе Apache Airflow.

Данные о курсе валютной пары берутся из API exchangerate.host и складываются в Постгрес каждые три часа.

При первом запуске процесса будут загружены исторические данные (начиная с 2022-01-01).

Окружение

  • Apache Airflow 2.2.4;
  • Python 3.8;
  • Postgres 13 (для бэкенда Эирфлоу и для хранения данных о курсах валют).

Реализация

ETL-процесс реализован в виде ДАГа btc_usd, состоящего из двух тасок:

  1. extract_rate: делает запрос на эндпоинт /convert, передавая шаблон execution_date в качестве даты.
  2. 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