Проектная работа по курсу Data Engineer от OTUS.
Система получения данных с API Московской биржи (MOEX ISS) и анализ доходности портфеля, на основе датасета c демонстрационными операциям. Визуализация данных в Yandex DataLens.
Yandex Cloud
, Airflow
, DBT
, Docker
, Yandex Object Storage
, ClickHouse
, Yandex DataLens
Оценка эффективности инвестиций с учетом комиссий, налогов, дивидендов и купонов.
Анализ доходности инвестиционного портфеля - Демонстрация дашборда.
Данные материализованы на 19.11.2021 17:40, без последующего обновления.
ℹ️ На момент публикации проекта, в Yandex DataLens отсутствует возможность экспорта/импорта всех связанных объектов дашборда для переноса.
- Docker - Контейнеризация приложений проекта (Airflow, DBT, requirements).
- Airflow - Получение и обработка данных с API Московской биржи (MOEX ISS). Оркестрация DBT.
- Yandex Object Storage - Облачное объектное хранилище (
AWS S3 API compatible
).
Хранение внешних данных для последующей обработки и загрузки в базу данных ClickHouse (S3 Table Engine
). - DBT - Автоматизация обработки и трансформации данных проекта в СУБД ClickHouse.
- Yandex Managed Service for ClickHouse - Колоночная аналитическая СУБД для хранения и обработки данных.
- Yandex DataLens - Облачный сервис для визуализации данных и бизнес-аналитики.
- Для работы проекта необходимы:
- Экземпляр СУБД ClickHouse (Версия: 21.8 и выше)
- Бакет в Yandex Object Storage.
Endpoint (https://storage.yandexcloud.net) прописан в файлах s3_yandex.py и init_s3_sources.sql.
- Настроить необходимые переменные окружения в файле .env
Инструкция по настройке необходимой инфраструктуры в Yandex Cloud ☁️
- Создать сервисный аккаунт необходимый для работы всех служб.
- Назначить роль сервисному аккаунту storage.editor.
- Создать статический ключ доступа ACCESS KEY для сервисного аккаунта.
- Создать бакет в Object Storage.
- Отредактировать ACL бакета - добавить сервисный аккаунт (Шаг 1) с правами FULL_CONTROL.
- Создать виртуальную машину Linux (Операционная система: Ubuntu 20.04).
- Установить docker и docker-compose на виртуальную машину:
# Install docker sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo usermod -a -G docker $USER # Install docker-compose sudo apt-get -y install wget sudo wget https://github.com/docker/compose/releases/download/v2.1.0/docker-compose-$(uname -s)-$(uname -m) -O /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo chmod 666 /var/run/docker.sock
- Создать кластер ClickHouse (Версия: 21.8 LTS и выше).
- Сервисный аккаунт - Выбрать сервисный аккаунт (Шаг 1).
- Хосты -> Редактировать хост -> Включить опцию Публичный доступ (При необходимости подключения к кластеру из интернета)
- Включить опцию Доступ из DataLens.
docker-compose up -d
Откройте интерфейс Airflow перейдя по адресу:
- При локальном запуске - http://localhost:8000/
- В случае облачной установки, по адресу хоста - http://host:8000/
Последовательно выполните действия:
- Для первоначальной инициализации проекта запустить DAG - ipa_project_initialization
- Для дальнейшей работы и обновления данных снять с паузы DAG - ipa_project_workload
Для возможности просмотра документации DBT открыт порт 8090 в контейнере.
Выполните комманды:
docker exec -it airdbt bash
cd ipa_project/dbt/
dbt docs generate
dbt docs serve --port 8090 --no-browser
Откройте документацию DBT перейдя по адресу:
- При локальном запуске - http://localhost:8090/
- В случае облачной установки, по адресу хоста - http://host:8090/
docker-compose down -v
docker rmi otus-de-ipa:1.0
Некоторые ограничения при визуализации данных:
- Округление чисел до двух знаков после запятой при визуализации, без возможности выбора формата отображения.
- Нет возможности выделения цветом отдельных ячеек таблицы в зависимости от условий или формулы.
- Нет возможности настроить ширину колонок.
- Документация Программный интерфейс к MOEX ISS
- Онлайн-справочник запросов к MOEX API: http://iss.moex.com/iss/reference/
Префиксом к описанным в нем запросам является: http://iss.moex.com/ - Чат ClickHouse в телеграм: https://t.me/clickhouse_ru
- Altinity ClickHouse Knowledge Base
- Марафон по DataLens: https://datayoga.ru/datalensbook
- Чат DataLens в телеграм: https://t.me/YandexDataLens