fix(superset): 5-минутные бакеты вместо часовых в графике динамики
- Зачем:
- все события стенда укладываются в ~50 минут (20:51–21:41 28.11.2022),
поэтому часовая гранулярность давала всего 2 точки и прямую диагональ,
которая читалась как ошибка расчёта и ничему не учила менти.
- Что:
- time_grain_sqla переведён с PT1H на PT5M (~10 точек, реальная форма трафика).
- чарт переименован «Events by Hour» → «Events over Time» (идемпотентно через
previous_slice_names), т.к. «by Hour» противоречит 5-минутным бакетам.
- синхронизированы README, SUPERSET_DASHBOARD.md и урок 6.
- Проверка:
- python3 -m py_compile superset/create_dashboard.py.
- make superset-dashboard (идемпотентно, чарт ID 5 переименован, 10 чартов).
- визуально через playwright-cli: кривая ~11 точек 20:50–21:40, консоль чистая.
This commit is contained in:
@@ -271,7 +271,7 @@ make superset-dashboard
|
||||
| Блок | Чарты | Датасет |
|
||||
|------|-------|---------|
|
||||
| **KPI** | Total Events, Unique Users, Avg Events/Visit, Conversion to /confirmation | `v_events_enriched` |
|
||||
| **Динамика** | Events by Hour (timeline), Traffic by Device (pie) | `v_events_enriched` |
|
||||
| **Динамика** | Events over Time (timeline), Traffic by Device (pie) | `v_events_enriched` |
|
||||
| **География** | Geography Map по странам | `v_events_enriched` |
|
||||
| **Маркетинг** | UTM Effectiveness Table, Page Funnel | `v_utm_effectiveness`, `v_top_pages_daily` |
|
||||
| **Слои** | Rows by Layer (event) — прохождение строк STG→ODS→DDS→DM | `dq_summary` |
|
||||
|
||||
@@ -67,7 +67,9 @@ KPI разложены в одну строку по 12-колоночной с
|
||||
`user_domain_id` и `click_id` идут 1:1 и дают то же число, что `Unique Users`.
|
||||
|
||||
#### Динамика трафика
|
||||
- **📅 Events by Hour** — линейный график событий по часам
|
||||
- **📅 Events over Time** — линейный график событий с 5-минутными бакетами
|
||||
(все события стенда укладываются в ~50 минут, поэтому часовая гранулярность
|
||||
давала бы всего 2 точки и прямую линию)
|
||||
- **📱 Traffic by Device** — pie chart распределения по устройствам
|
||||
|
||||
#### География
|
||||
|
||||
@@ -118,7 +118,7 @@ http://localhost:8088/superset/dashboard/1/
|
||||
|
||||
- KPI сверху: `Total Events`, `Unique Users`, `Avg Events/Visit`,
|
||||
`Conversion to /confirmation`;
|
||||
- динамика: `Events by Hour`, `Traffic by Device`;
|
||||
- динамика: `Events over Time`, `Traffic by Device`;
|
||||
- география: `Geography Map`;
|
||||
- маркетинг: `UTM Effectiveness Table`, `Page Funnel`;
|
||||
- прохождение строк по слоям: `Rows by Layer (event)`.
|
||||
|
||||
@@ -103,12 +103,17 @@ CHARTS_CONFIG = [
|
||||
},
|
||||
# Динамика
|
||||
{
|
||||
"slice_name": "📅 Events by Hour",
|
||||
"slice_name": "📅 Events over Time",
|
||||
"previous_slice_names": ["📅 Events by Hour"],
|
||||
# Все события стенда укладываются в ~50 минут (20:51–21:41 28.11.2022),
|
||||
# поэтому часовая гранулярность давала всего 2 точки и прямую линию,
|
||||
# читавшуюся как ошибка. 5-минутные бакеты дают ~10 точек — реальную
|
||||
# форму трафика. Поэтому и название не «by Hour», а «over Time».
|
||||
"viz_type": "echarts_timeseries_line",
|
||||
"dataset_name": "v_events_enriched",
|
||||
"params": {
|
||||
"granularity_sqla": "event_ts",
|
||||
"time_grain_sqla": "PT1H",
|
||||
"time_grain_sqla": "PT5M",
|
||||
"metrics": [
|
||||
{
|
||||
"expressionType": "SQL",
|
||||
@@ -283,7 +288,7 @@ DASHBOARD_ROWS = [
|
||||
[("📊 Total Events", 3), ("👤 Unique Users", 3),
|
||||
("📈 Avg Events/Visit", 3), ("🎯 Conversion to /confirmation", 3)],
|
||||
# Динамика во времени + разрез по устройствам
|
||||
[("📅 Events by Hour", 8), ("📱 Traffic by Device", 4)],
|
||||
[("📅 Events over Time", 8), ("📱 Traffic by Device", 4)],
|
||||
# География + эффективность маркетинговых каналов
|
||||
[("🌍 Geography Map", 6), ("🔗 UTM Effectiveness Table", 6)],
|
||||
# Популярные страницы + прохождение строк по слоям
|
||||
|
||||
Reference in New Issue
Block a user