Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📊 League of Legends ETL & Analytics Project

📌 Описание проекта

Аналитический проект, в котором реализован полный ETL-пайплайн для сбора, обработки и анализа данных матчей League of Legends с использованием Riot API.

Проект включает:

  • сбор данных о матчах и игроках
  • трансформацию в аналитические таблицы
  • загрузку в PostgreSQL
  • построение витрин (SQL views) для BI-инструментов
  • подготовку данных для визуализации (DataLens)

🏗 Архитектура проекта

Проект построен по классической схеме:

EXTRACT → TRANSFORM → LOAD → MART (SQL views) → DASHBOARD

📂 Структура репозитория

lol_etl/
│
├── etl/
│   ├── extract.py          # загрузка данных из API
│   ├── transform.py        # преобразование в таблицы
│   ├── load.py             # загрузка в CSV и PostgreSQL
│   ├── logger_config.py    # настройка логирования
│
├── sql/
│   ├── views.sql           # SQL-витрины (mart слой)
│   ├── analysis.sql        # аналитические запросы
│
├── config.py               # конфигурация проекта
├── main.py                 # точка входа (ETL pipeline)
├── requirements.txt        # зависимости
│
├── data/                   # (опционально) локальные данные
├── README.md
│
├── dashboard/                   # (опционально) локальные данные
├── View.sql
├── ссылка.doc


⚙️ Используемые технологии

  • Python (pandas, requests)
  • PostgreSQL
  • SQL (views / marts)
  • Yandex DataLens
  • Riot Games API

🔄 ETL пайплайн

1. Extract

  • Получение топ-игроков (Challenger)
  • Загрузка матчей по puuid
  • Получение данных о предметах

2. Transform

Формируются таблицы:

  • players — список игроков
  • matches — информация о матчах
  • participants — игроки в матчах (основная таблица)
  • match_items — предметы игроков
  • items — справочник предметов

3. Load

  • Сохранение в CSV
  • Загрузка в PostgreSQL

🧠 Аналитический слой (SQL)

Созданы витрины:

  • mart_champion_stats
  • mart_role_stats
  • mart_economy_stats
  • mart_item_stats
  • mart_item_champion
  • mart_object_impact
  • mart_vision_stats
  • mart_cs_impact

📌 Важно: Витрины не соединяются между собой напрямую — используются отдельно в BI.


📊 Аналитика

Проект позволяет анализировать:

  • винрейт чемпионов
  • влияние фарма (CS)
  • экономику (gold)
  • использование предметов
  • роль игрока
  • влияние объектов (драконы, башни)
  • vision-контроль

🚀 Запуск проекта

python main.py --players 60 --matches 40 --save-csv yes --save-db yes

Параметры:

  • --players — количество игроков
  • --matches — матчей на игрока
  • --save-csv — сохранять ли в CSV
  • --save-db — сохранять ли в БД

🔐 Безопасность (доработка)

В процессе разработки изучается:

  • скрытие API ключей
  • работа с .env
  • исключение паролей из репозитория

📌 Рекомендации:

  • не хранить пароли в коде
  • использовать переменные окружения
  • добавить .env в .gitignore

📈 Ограничения данных

На текущий момент:

  • загружается ограниченное количество игроков и матчей
  • данные могут быть недостаточны для глубокой аналитики

🔄 В работе:

  • увеличение объема данных
  • оптимизация загрузки
  • переход к инкрементальной загрузке

🧪 Будущие улучшения

  • инкрементальный ETL (без дубликатов)
  • автоматическое обновление данных
  • расширение витрин
  • добавление ML-анализа
  • деплой в облако

📊 Визуализация

Данные будут использованы в DataLens для построения дашборда:

https://datalens.yandex/h3o7i2hf74pc0 ссылка на дашборд (в разработке)

  • топ чемпионов по винрейту
  • распределение метрик
  • анализ ролей
  • зависимость KDA

👩‍💻 Автор

Никитина Полина Владимировна Фокус на:

  • SQL
  • ETL
  • построение аналитических моделей
  • визуализация данных

📌 Итог

Проект демонстрирует:

  • полный цикл работы с данными
  • понимание архитектуры аналитики
  • умение строить витрины и дашборды
  • работу с API и базами данных

About

Анализ активности чемпионов в League of Legends

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages