feat(stand): переведён аналитический путь на стартовую историю
- Зачем: - чистый стенд должен строить аналитику из генерации, а не из архивного JSONL-сида. - Что: - добавлены команды generated-history-analytics и generated-history-check. - обновлены README, operations и Superset-документы под путь generator backfill -> DM -> Superset. - создан follow-up на миграцию учебных материалов с архивного сида. - Проверка: - make generated-history-analytics. - make generated-history-check. - reviewer gate issue 06 пройден без блокирующих находок.
This commit is contained in:
+19
-30
@@ -9,20 +9,13 @@
|
||||
### 1. Запуск инфраструктуры
|
||||
|
||||
```bash
|
||||
# Запуск всех сервисов
|
||||
make up
|
||||
|
||||
# Применение DDL в ClickHouse
|
||||
make ddl
|
||||
|
||||
# Загрузка данных в Kafka
|
||||
make data
|
||||
|
||||
# Запуск ETL-пайплайна (ODS → DDS → DM)
|
||||
make transform
|
||||
# Чистый прогон: стартовая история генератора -> DM -> Superset
|
||||
make generated-history-analytics
|
||||
```
|
||||
|
||||
### 2. Инициализация Superset
|
||||
Команда очищает volumes, генерирует стартовую историю, прогоняет batch
|
||||
STG -> ODS -> DDS -> DM и создаёт metadata Superset. Если данные уже
|
||||
подготовлены и нужно только пересобрать Superset:
|
||||
|
||||
```bash
|
||||
# Автоматическая инициализация (создание подключения и датасетов)
|
||||
@@ -32,7 +25,7 @@ make superset-init
|
||||
make superset-dashboard
|
||||
```
|
||||
|
||||
### 3. Доступ к UI
|
||||
### 2. Доступ к UI
|
||||
|
||||
Откройте в браузере: http://localhost:8088
|
||||
|
||||
@@ -63,13 +56,14 @@ make superset-dashboard
|
||||
- **🎯 Conversion to /confirmation** — доля просмотров `/confirmation` от просмотров `/home`
|
||||
|
||||
KPI разложены в одну строку по 12-колоночной сетке Superset: четыре блока по 3 колонки.
|
||||
`Unique Sessions` не вынесен отдельной KPI-плиткой, потому что в демо-данных
|
||||
`user_domain_id` и `click_id` идут 1:1 и дают то же число, что `Unique Users`.
|
||||
`Unique Sessions` не вынесен отдельной KPI-плиткой: в текущем дашборде важнее
|
||||
развести события, пользователей и среднюю глубину визита. Генератор создаёт
|
||||
повторные визиты, поэтому `user_domain_id` и `click_id` уже не идут 1:1.
|
||||
|
||||
#### Динамика трафика
|
||||
- **📅 Events over Time** — линейный график событий с 5-минутными бакетами
|
||||
(все события стенда укладываются в ~50 минут, поэтому часовая гранулярность
|
||||
давала бы всего 2 точки и прямую линию)
|
||||
(быстрый проверочный профиль покрывает 6 часов модельного времени, поэтому
|
||||
5-минутные бакеты дают видимую динамику без лишнего шума)
|
||||
- **📱 Traffic by Device** — pie chart распределения по устройствам
|
||||
|
||||
#### География
|
||||
@@ -92,11 +86,9 @@ KPI разложены в одну строку по 12-колоночной с
|
||||
> **Почему именно одно зерно, а не сумма по слою.** Чарт берёт по одной
|
||||
> канонической таблице на слой (`browser_raw → browser_event → event →
|
||||
> v_events_enriched`). Если суммировать `total_rows` по всем таблицам слоя,
|
||||
> в один столбец складываются таблицы разного зерна (события `1000` + визиты `99`
|
||||
> + пустые error-таблицы) и получается **ложная «воронка потерь»**, которой нет.
|
||||
> На одном зерне убывание становится настоящим: видимый шаг **1050 → 1000** —
|
||||
> это дедупликация at-least-once потока по `event_id` в ODS
|
||||
> (`ReplacingMergeTree`), а дальше число стабильно до витрины.
|
||||
> в один столбец складываются таблицы разного зерна: события, визиты и
|
||||
> error-таблицы. Получается **ложная «воронка потерь»**, которой нет. На одном
|
||||
> зерне видно прохождение event-строк по слоям, а не сумму несравнимых таблиц.
|
||||
>
|
||||
> Настоящие сигналы качества (`rows_with_errors` в ODS, `orphan_events` в DDS)
|
||||
> на чистых демо-данных равны нулю и живут в `dm.dq_summary` отдельными
|
||||
@@ -110,7 +102,7 @@ KPI разложены в одну строку по 12-колоночной с
|
||||
|
||||
| Фильтр | Поле | Тип | Применение |
|
||||
|--------|------|-----|------------|
|
||||
| 📅 Date Range | `event_date` | Time Range | Charts с `event_date`; по умолчанию `No filter`, чтобы демо-данные 2022 года не скрывались |
|
||||
| 📅 Date Range | `event_date` | Time Range | Charts с `event_date`; по умолчанию `No filter`, чтобы стартовая история не скрывалась фильтром даты |
|
||||
| 🌍 Country | `geo_country` | Multi-select | Charts на `dm.v_events_enriched` |
|
||||
| 📱 Device Type | `device_type` | Multi-select | Charts на `dm.v_events_enriched` |
|
||||
| 🌐 Browser | `browser_name` | Multi-select | Charts на `dm.v_events_enriched` |
|
||||
@@ -135,8 +127,10 @@ make clean # Остановка с удалением volumes
|
||||
make logs service=superset # Логи сервиса
|
||||
|
||||
# ETL
|
||||
make generated-history-analytics # Чистый прогон генерации до Superset
|
||||
make generated-history-check # Проверка DM и Superset metadata
|
||||
make ddl # Применение DDL в ClickHouse
|
||||
make data # Загрузка данных в Kafka
|
||||
make data # Архивная загрузка data/*.jsonl в Kafka
|
||||
make transform # Запуск batch-процесса
|
||||
|
||||
# Superset
|
||||
@@ -247,12 +241,7 @@ make superset-restart
|
||||
|
||||
# Полная переинициализация
|
||||
docker compose down -v
|
||||
docker compose up -d
|
||||
make ddl
|
||||
make data
|
||||
make transform
|
||||
make superset-init
|
||||
make superset-dashboard
|
||||
make generated-history-analytics
|
||||
```
|
||||
|
||||
### Нет данных в чартах
|
||||
|
||||
Reference in New Issue
Block a user