Проект витрины данных для маркетплейса на основе датасета Olist с визуализацией в Metabase
- О проекте
- Архитектура
- Технологический стек
- Структура проекта
- Установка и настройка
- Запуск ETL
- Metabase Dashboard
- Дашборд
Полнофункциональная витрина данных (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
Создайте виртуальное окружение и установите зависимости:
# Создание виртуального окружения
python -m venv .venv
# Активация (Windows)
.venv\Scripts\activate
# Активация (Linux/macOS)
source .venv/bin/activate
# Установка зависимостей
pip install pandas psycopg2-binary python-dotenvСкопируйте файл с примером и заполните своими значениями:
cp .env.example .envПример файла .env:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=olist_dwh
DB_USER=postgres
DB_PASSWORD=postgres
⚠️ Важно: Файл.envне должен попадать в git!
Создайте базу данных PostgreSQL:
# Через psql
createdb -U postgres olist_dwh
# Или через pgAdminПримените DDL-скрипт для создания схем и таблиц:
psql -U postgres -d olist_dwh -f sql/schema.sqlБудут созданы схемы:
raw— исходные данныеdwh— хранилище данныхmarts— витрины данных
Скачайте датасет 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 из-за большого размера датасета.
Загрузите исходные CSV-файлы в слой RAW:
python etl/etl_raw_olist.pyПосле выполнения скрипта данные будут доступны в таблицах схемы raw.*.
Запустите Metabase через Docker Compose:
docker compose up -dОткройте в браузере:
http://localhost:3000
При первом запуске подключите базу данных в 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