Skip to content

DataLearns/DA-final-project

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Аналитический дашборд для маркетплейса

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

Проект реализует полный цикл автоматизированного сбора данных по API, их загрузку в БД PostgreSQL и визуализацию ключевых метрик через Yandex DataLens.

Цель - обеспечить стабильный поток данных для аналитики клиентской активности, продаж и ассортиментной матрицы.

Структура проекта

da-final-project/
├── .venv/                      # виртуальное окружение (скрыто)
├── DataLens/
│   └── DataLens_Backup.json    # Бэкап для DataLens
├── img/                        # скриншоты дашборда
│   ├── dark_theme/             # тёмная тема
│   └── light_theme/            # светлая тема
├── python/
│   ├── config.ini              # конфиг подключения к БД (скрыт)
│   ├── fetch_data.py           # сбор информации из API и формирование датасета
│   ├── get_daily_data.py       # ежедневный сбор данных и их загрузка в PostgreSQL
│   ├── get_historical_data.py  # единоразвый сбор данных с 2022-01-01 и их загрузка в PostgreSQL
│   ├── pgdb.py                 # класс-синглтон для кодключения к БД
│   └── requirements.txt        # файл для установки всех необходимых библиотек
├── logs/
│   └── YYYY-MM-DD.log          # логи работы
├── sh/
│   └── get_data.sh             # sh-скрипт для выполнения программы на python через .venv
├── sql/
│   ├── create_table.sql        # SQL-запросы для PostgreSQL для создания необходимой таблицы и ограничений для неё
│   └── datalens.sql            # Дополнительные SQL-запросы (с параметрами) для формирования датасетов в Yandex DataLens
├── .gitignore
└── readme.md                   # документация

Автоматизация

  1. Загрузка исторических данных выполнена единоразово через get_historical_data.py.

  2. На сервер настроены следующие ежедневные задачи через cron:

    • В 6:50 удаляюся логи старше 21 дня из папки logs, чтобы избеать переполнения хранилища:

      50 6 * * * find /home/projects/final_project/logs/ -type f -mtime +21 -delete
    • В 7:00 запускается sh-скрипт, который запускает python-файл для сбора вчерашних данных и загрузки их в PostgreSQL:

      0 7 * * * /home/projects/final_project/get_data.sh

      Все задачи выполняются по московскому времени. Логика построена так, чтобы данные были загружены до начала рабочего дня

Доступ к БД

  • Тип: PostgreSQL
  • IP: 62.113.105.120
  • Порт: 5432
  • База: postgres
  • Пользователь: user_ro
  • Пароль: user
  • Права: SELECT (только чтение)

Ссылки

Дашборд в Yandex.DataLens (тёмная тема) | Дашборд в Yandex.DataLens(светлая тема) | Исследование продаж 2023 года

Примечения

  • Корректность данных и их заполнения производится на уровне PostgreSQL:

    ALTER TABLE project.project_data 
    ADD CONSTRAINT valid_discount CHECK (discount_per_item <= price_per_item),
    ADD CONSTRAINT valid_total_price CHECK (total_price = (price_per_item - discount_per_item) * quantity);
  • Сервер слабенький, всего 1 процессор и 2ГБ ОЗУ, поэтому некоторые чарты могут грузиться долго.

  • В целях экономии ресурсов, в самом DataLens выставлены настройки обновления кэша 1 раз в сутки + выставлена загрузка максимум 3-х чартов за раз.

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

    • client_id
    • product_id
    • purchase_datetime
    • (client_id, product_id)
      CREATE INDEX idx_project_data_client_id ON project.project_data(client_id);
      CREATE INDEX idx_project_data_product_id ON project.project_data(product_id);
      CREATE INDEX idx_project_data_purchase_datetime ON project.project_data(purchase_datetime);
      CREATE INDEX idx_project_data_client_product ON project.project_data(client_id, product_id);
  • У некоторых чартов есть символ ?, который даёт некоторые пояснения. Кроме того, некоторые элементы чартов при наведении курсора мышки выдают всплывающие подсказки.

  • На каждой вкладке дашборда есть описание и цель вкладки, после прочтения можно свернуть.

  • Сверху каждой вкладки закреплены селекторы, которые позволяют выбрать период и/или масштаб исследования.

Исследование на основе данных 2023 года было решено провести прямо в DataLens, чтобы показать самодостаточность созданного дашборда для полноценного анализа ситуации и принятия решений.

About

Проект реализует полный цикл автоматизированного сбора данных по API, их загрузку в БД PostgreSQL и визуализацию ключевых метрик через Yandex DataLens. Цель - обеспечить стабильный поток данных для аналитики клиентской активности, продаж и ассортиментной матрицы.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 98.9%
  • Shell 1.1%