feat: добавлен дашборд Superset для e-commerce аналитики

- Добавлен сервис superset-init в docker-compose для автоматической инициализации
- Созданы Python-скрипты для инициализации подключения ClickHouse и создания датасетов
- Создан скрипт для автоматического создания дашборда с 10 чартами
- Создан скрипт экспорта дашборда в JSON
- Добавлен экспортируемый JSON дашборда (ecommerce_analytics.zip.json)
- Обновлен Makefile с командами superset-init, superset-dashboard, superset-export
- Добавлена документация docs/SUPERSET_DASHBOARD.md

Дашборд включает:
- KPI блок (Total Events, Unique Users, Sessions, Avg/Session)
- Динамика трафика (Events by Hour, Traffic by Device)
- География (World Map)
- Маркетинг (UTM Effectiveness Table, Top Pages)
- Качество данных (DQ Summary)
- Native Filters (Date Range, Country, Device, Browser)
This commit is contained in:
2026-02-10 20:48:05 +03:00
parent 21fd58dc9d
commit 2e48f6065a
7 changed files with 1351 additions and 2 deletions
+262
View File
@@ -0,0 +1,262 @@
# Дашборд Superset для E-commerce Analytics
Документация по настройке и использованию Superset дашборда для анализа кликстрима.
---
## Быстрый старт
### 1. Запуск инфраструктуры
```bash
# Запуск всех сервисов
make up
# Применение DDL в ClickHouse
make ddl
# Загрузка данных в Kafka
make data
# Запуск ETL-пайплайна (ODS → DDS → DM)
make transform
```
### 2. Инициализация Superset
```bash
# Автоматическая инициализация (создание подключения и датасетов)
make superset-init
# Создание дашборда с чартами
make superset-dashboard
```
### 3. Доступ к UI
Откройте в браузере: http://localhost:8088
**Логин:** `admin`
**Пароль:** `admin`
---
## Структура дашборда
### Витрины данных (Datasets)
| Витрина | Таблица ClickHouse | Описание |
|---------|-------------------|------------|
| **Events Enriched** | `dm.v_events_enriched` | Полная обогащённая витрина событий |
| **Daily Traffic** | `dm.v_daily_traffic` | Агрегаты по дням |
| **UTM Effectiveness** | `dm.v_utm_effectiveness` | Эффективность маркетинговых каналов |
| **Top Pages** | `dm.v_top_pages_daily` | Популярность страниц |
| **Session Overview** | `dm.v_session_overview` | Анализ сессий |
| **DQ Summary** | `dm.dq_summary` | Качество данных |
### Чарты (Charts)
#### KPI-блок (верх дашборда)
- **📊 Total Events** — общее количество событий
- **👤 Unique Users** — уникальные пользователи
- **🎯 Unique Sessions** — уникальные сессии (click_id)
- **📈 Avg Events/Session** — среднее количество событий на сессию
#### Динамика трафика
- **📅 Events by Hour** — линейный график событий по часам
- **📱 Traffic by Device** — pie chart распределения по устройствам
#### География
- **🌍 Geography Map** — world map с распределением по странам
#### Маркетинг
- **🔗 UTM Effectiveness Table** — таблица эффективности UTM-меток
- **📄 Top Pages** — bar chart топ-20 страниц
#### Качество данных
- **🔍 Data Quality Summary** — статистика по слоям STG/ODS/DDS
### Фильтры (Native Filters)
| Фильтр | Поле | Тип | Применение |
|--------|------|-----|------------|
| 📅 Date Range | `event_date` | Time Range | Все чарты |
| 🌍 Country | `geo_country` | Multi-select | Все чарты |
| 📱 Device Type | `device_type` | Multi-select | Все чарты |
| 🌐 Browser | `browser_name` | Multi-select | Все чарты |
---
## Команды Makefile
```bash
# Основные
make up # Запуск всех сервисов
make down # Остановка сервисов
make down-v # Остановка с удалением volumes
make logs service=superset # Логи сервиса
# ETL
make ddl # Применение DDL в ClickHouse
make data # Загрузка данных в Kafka
make transform # Запуск batch-процесса
# Superset
make superset-init # Инициализация (подключение + датасеты)
make superset-dashboard # Создание дашборда
make superset-export # Экспорт дашборда в JSON
make superset-ui # Показать URL и логин
make superset-restart # Перезапуск сервиса
```
---
## Ручная настройка (если автоматика не сработала)
### Создание подключения к ClickHouse
1. Откройте **Settings → Database Connections**
2. Нажмите **+ Database**
3. Выберите **ClickHouse**
4. Введите SQLAlchemy URI:
```
clickhouse+native://default@clickhouse:9000/default
```
5. Установите:
- **Expose in SQL Lab:** ✅
- **Allow DDL:** ❌
6. Нажмите **Connect**
### Импорт датасетов
```bash
# Внутри контейнера
docker compose exec superset bash
python /app/superset_init/init_superset.py
```
### Создание чартов вручную
1. Перейдите в **Charts → + Chart**
2. Выберите датасет (например, `dm.v_events_enriched`)
3. Настройте визуализацию:
- **Viz Type:** Big Number / Line Chart / Pie Chart / World Map / Table
- **Metrics:** COUNT(*), COUNT(DISTINCT ...)
- **Dimensions:** группировки
- **Filters:** фильтры
4. Нажмите **Create Chart**
### Создание дашборда
1. **Dashboards → + Dashboard**
2. Назовите: "E-commerce Analytics Dashboard"
3. Добавьте чарты из списка
4. Настройте layout (drag-and-drop)
5. Добавьте Native Filters (фильтры вверху)
6. Сохраните
---
## Экспорт и импорт дашборда
### Экспорт
```bash
# Автоматический экспорт в JSON
make superset-export
# Результат: superset/dashboards/ecommerce_analytics.json
```
### Импорт
```bash
# Импорт через CLI
docker compose exec superset superset import-dashboards -p /app/superset_init/dashboards/ecommerce_analytics.json
# Или через UI: Settings → Import Dashboards
```
---
## Расширение дашборда
### Добавление нового чарта
1. Отредактируйте `superset/create_dashboard.py`
2. Добавьте конфигурацию в `CHARTS_CONFIG`
3. Запустите: `make superset-dashboard`
Пример нового чарта:
```python
{
"slice_name": "📊 My New Chart",
"viz_type": "echarts_bar",
"dataset_name": "v_events_enriched",
"params": {
"x_axis": "event_type",
"metrics": [{"sqlExpression": "COUNT(*)", "label": "Count"}],
"time_range": "No filter"
}
}
```
---
## Troubleshooting
### Superset не стартует
```bash
# Проверить логи
make logs service=superset
# Перезапуск
make superset-restart
# Полная переинициализация
docker compose down -v
docker compose up -d
make superset-init
```
### Нет данных в чартах
```bash
# Проверить данные в ClickHouse
docker compose exec clickhouse clickhouse-client -q "SELECT count() FROM dm.v_events_enriched"
# Перезапустить ETL
make transform
```
### Ошибка подключения к ClickHouse
```bash
# Проверить доступность ClickHouse
docker compose exec superset bash -c "ping clickhouse"
# Проверить порт
docker compose exec superset bash -c "curl clickhouse:8123"
```
---
## Порты сервисов
| Сервис | URL | Логин/Пароль |
|--------|-----|--------------|
| Superset | http://localhost:8088 | admin / admin |
| ClickHouse HTTP | http://localhost:9123 | default / (пустой) |
| Airflow | http://localhost:8080 | admin / admin |
| Grafana | http://localhost:3000 | admin / admin |
| Prometheus | http://localhost:9090 | - |
| Kafka UI | http://localhost:8082 | - |
---
## Дополнительные ресурсы
- [Superset Documentation](https://superset.apache.org/docs/intro)
- [ClickHouse SQL Reference](https://clickhouse.com/docs/en/sql-reference)
- [ARCHITECTURE.md](./ARCHITECTURE.md) — архитектура хранилища