Skip to content

AmaliNur/data_mart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛒 Olist Data Mart

Проект витрины данных для маркетплейса на основе датасета Olist с визуализацией в Metabase

PostgreSQL Python Metabase Docker


📋 Содержание


🎯 О проекте

Полнофункциональная витрина данных (data mart) для анализа данных бразильского e-commerce маркетплейса Olist. Проект включает в себя:

✅ Загрузку исходных CSV в слой RAW (PostgreSQL)
✅ Трансформацию и подготовку данных для аналитики (DWH/MARTS)
✅ Визуализацию и интерактивный дашборд в Metabase


🏗️ Архитектура

CSV Datasets → RAW Layer → DWH Layer → MARTS Layer → Metabase Dashboard

Слои данных

Слой Описание
raw.* Исходные данные из CSV без изменений
dwh.* Факты и измерения для аналитики
marts.* Готовые витрины данных для бизнес-отчетов
Metabase BI-интерфейс и интерактивные дашборды

🛠️ Технологический стек

  • Python — ETL-процессы (pandas, psycopg2)
  • PostgreSQL — хранилище данных
  • Metabase — визуализация и дашборды
  • Docker / Docker Compose — контейнеризация Metabase

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

olist_data_mart/
├── 📂 data/                          # CSV-файлы Olist (не коммитятся)
├── 📂 docs/                          # Скриншоты и экспорт дашборда
├── 📂 etl/
│   ├── config.py                     # Чтение конфигурации БД из .env
│   └── etl_raw_olist.py              # Загрузка CSV → raw.*
├── 📂 sql/
│   └── schema.sql                    # DDL: схемы и таблицы
├── .env.example                      # Пример переменных окружения
├── docker-compose.yml                # Metabase в Docker
├── .gitignore
└── README.md

🚀 Установка и настройка

1️⃣ Python-окружение

Создайте виртуальное окружение и установите зависимости:

# Создание виртуального окружения
python -m venv .venv

# Активация (Windows)
.venv\Scripts\activate

# Активация (Linux/macOS)
source .venv/bin/activate

# Установка зависимостей
pip install pandas psycopg2-binary python-dotenv

2️⃣ Конфигурация базы данных

Скопируйте файл с примером и заполните своими значениями:

cp .env.example .env

Пример файла .env:

DB_HOST=localhost
DB_PORT=5432
DB_NAME=olist_dwh
DB_USER=postgres
DB_PASSWORD=postgres

⚠️ Важно: Файл .env не должен попадать в git!

3️⃣ Создание базы данных

Создайте базу данных PostgreSQL:

# Через psql
createdb -U postgres olist_dwh

# Или через pgAdmin

Примените DDL-скрипт для создания схем и таблиц:

psql -U postgres -d olist_dwh -f sql/schema.sql

Будут созданы схемы:

  • raw — исходные данные
  • dwh — хранилище данных
  • marts — витрины данных

4️⃣ Подготовка датасета Olist

Скачайте датасет Olist Brazilian E-Commerce и поместите CSV-файлы в папку data/:

data/
├── olist_customers_dataset.csv
├── olist_geolocation_dataset.csv
├── olist_order_items_dataset.csv
├── olist_order_payments_dataset.csv
├── olist_order_reviews_dataset.csv
├── olist_orders_dataset.csv
├── olist_products_dataset.csv
├── olist_sellers_dataset.csv
└── product_category_name_translation.csv

📝 Примечание: Папка data/ не коммитится в git из-за большого размера датасета.


⚙️ Запуск ETL

Загрузите исходные CSV-файлы в слой RAW:

python etl/etl_raw_olist.py

После выполнения скрипта данные будут доступны в таблицах схемы raw.*.


📊 Metabase Dashboard

Запуск Metabase

Запустите Metabase через Docker Compose:

docker compose up -d

Откройте в браузере:

http://localhost:3000

Подключение к PostgreSQL

При первом запуске подключите базу данных в Metabase:

Параметр Значение
Host host.docker.internal (для Windows/Mac)
или IP-адрес хоста
Port 5432
Database olist_dwh
Username Ваш DB_USER из .env
Password Ваш DB_PASSWORD из .env

📈 Дашборд

Аналитический дашборд включает следующие визуализации:

  • 💰 Ключевые KPI: выручка, количество заказов, уникальные клиенты, средний чек
  • 📅 Динамика выручки по дням
  • 🏆 Топ-10 категорий по выручке
  • 🌆 Топ-10 городов по выручке
  • 🗺️ География продаж по штатам Бразилии

Скриншоты дашборда и экспорт доступны в папке docs/.


📝 Лицензия

Этот проект создан в образовательных целях.


🤝 Контакты

Если у вас есть вопросы или предложения, создайте Issue в репозитории.


Сделано с ❤️ для анализа данных e-commerce

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages