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:
@@ -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) — архитектура хранилища
|
||||
Reference in New Issue
Block a user