docs(labs): ТЗ ступени 2 «Свой график в Superset» и порядок программы
- Зачем:
- программа лаб принята спекой, но индекс docs/labs/ показывал только
пять витрин и дашборд; ступень 2 не имела ТЗ (#226).
- Что:
- новое ТЗ docs/labs/superset-chart.md: один столбиковый график доли
отказов по устройствам поверх dm.session_overview_v, метрика в датасете.
- docs/labs/README.md: семь ступеней основной программы и пять разделов
факультативов; правила пяти витрин помечены как правила ступени 1.
- шапка docs/labs/superset-dashboard.md: факультатив раздела «Superset и BI».
- Проверка:
- grep 'ё' и 'менти' по трем файлам молчат; скрипт ссылок из тикета
печатает пусто; git diff --check чистый.
Closes #226
This commit is contained in:
1 parent
92948986a0
commit
830efa7ef4
3 files changed
+151
-22
No files matched your search
+58
-17
@@ -1,21 +1,29 @@
|
||||
# Учебные задания: витрины слоя DM и дашборд в Superset
|
||||
# Учебные задания
|
||||
|
||||
Пять домашних заданий — про витрины слоя DM. Стенд привозит слой
|
||||
наполовину: витрины трех сюжетов дашборда и контроль качества построены,
|
||||
остальные витрины строит менти. Каждое из них — самостоятельное ТЗ: что за
|
||||
витрина, какое у нее зерно, из чего она собирается и как проверить, что
|
||||
собралась верно.
|
||||
Программа состоит из двух частей: основная включает семь ступеней, которые ты
|
||||
проходишь по порядку, а факультативы выбираешь по желанию. Причины такого
|
||||
порядка и формы заданий описаны в [программе учебных лаб](../specs/2026-09-01-labs-program.md#2-устройство-программы-основная-программа-и-факультативы).
|
||||
|
||||
Шестое задание — необязательная лаба в Superset. В ней менти собирает свой
|
||||
дашборд поверх пяти витрин.
|
||||
## Основная программа
|
||||
|
||||
Общее устройство слоя — [дока DM](../architecture/dm.md). Она отвечает на
|
||||
вопросы «почему так», задание отвечает на вопрос «что сделать».
|
||||
| Ступень | Задание | Чему учит |
|
||||
|---|---|---|
|
||||
| 1 | Пять витрин слоя DM | построить результат для потребителя хранилища; уроки каждой витрины — в таблице ниже |
|
||||
| 2 | [Свой график в Superset](superset-chart.md) | превратить свой результат из хранилища в отчет в BI |
|
||||
| 3 | Нарежь сессии сам | счет показывает проблему, но причину приходится искать в отдельных строках |
|
||||
| 4 | Перепиши нарезку стенда | изменить расчетную сущность внутри готового конвейера и проверить ее внешним эталоном |
|
||||
| 5 | Сначала сторож, потом ломай: заказы | построить сторожей до рискованного изменения, а не после первой поломки |
|
||||
| 6 | Разбери сырые события и сверь результат со стендом | изучить разбор потока отдельно от живого приема и сверить его со стендовым результатом |
|
||||
| 7 | Мониторинг: куда смотреть | выбрать, куда и на что смотреть в живой системе |
|
||||
|
||||
## Порядок
|
||||
ТЗ для ступеней 3–7 появятся по мере продвижения программы.
|
||||
|
||||
Задания идут по нарастанию: каждое следующее опирается на то, что уже
|
||||
усвоено.
|
||||
## Ступень 1: пять витрин слоя DM
|
||||
|
||||
Слой DM в стенде построен наполовину: витрины трех сюжетов дашборда и контроль
|
||||
качества уже построены, остальные пять витрин строишь ты. Каждая из них —
|
||||
самостоятельное ТЗ: в нем есть состав витрины, зерно, источники и способ
|
||||
проверки.
|
||||
|
||||
| № | Результат | Чему учит |
|
||||
|---|---|---|
|
||||
@@ -24,11 +32,13 @@
|
||||
| 3 | [`session_overview`](session-overview.md) | зерно решает, на какие вопросы витрина уже не ответит |
|
||||
| 4 | [`dq_errors_daily`](dq-errors-daily.md) | у брака свой день и свой срок жизни |
|
||||
| 5 | [`utm_effectiveness`](utm-effectiveness.md) | `declared_` в имени — предупреждение, а не украшение |
|
||||
| 6 | [Свой дашборд в Superset](superset-dashboard.md) — необязательная лаба | свои объекты BI живут отдельно от стендовых |
|
||||
|
||||
## Общие правила
|
||||
Общее устройство слоя — [дока DM](../architecture/dm.md). Она отвечает на
|
||||
вопросы «почему так», задание отвечает на вопрос «что сделать».
|
||||
|
||||
Они одни для пяти заданий по витринам, поэтому записаны здесь, а не
|
||||
## Общие правила ступени 1
|
||||
|
||||
Они одни для пяти заданий по витринам ступени 1, поэтому записаны здесь, а не
|
||||
повторяются в каждом ТЗ.
|
||||
|
||||
**Читать — через `_v`.** Публичный договор сущности DDS — представление с
|
||||
@@ -72,7 +82,7 @@ DDS, и задания остаются независимыми. Исключе
|
||||
Списывать с нее устройство можно и нужно; списывать состав колонок — нет,
|
||||
он у каждой витрины свой.
|
||||
|
||||
## Самопроверка
|
||||
## Самопроверка ступени 1
|
||||
|
||||
Даг `homework_check` запускается рукой, расписания у него нет. Задача
|
||||
витрины красная, пока витрины нет или счет не сходится, и зеленая, когда
|
||||
@@ -101,6 +111,37 @@ DDS, и задания остаются независимыми. Исключе
|
||||
Смотреть туда стоит после своей сборки: сравнить два решения полезно,
|
||||
списать одно — нет.
|
||||
|
||||
## Факультативы
|
||||
|
||||
Эти задания ты берешь по желанию. Полный список сюжетов — в разделе
|
||||
[«Факультативы — пять разделов»](../specs/2026-09-01-labs-program.md#4-факультативы--пять-разделов)
|
||||
программы.
|
||||
|
||||
### Почему выручка не сходится
|
||||
|
||||
Открывается после ступени 1. Расхождения между источниками, повторы
|
||||
покупок и день, после которого отчет можно считать окончательным.
|
||||
|
||||
### Тонкий анализ данных
|
||||
|
||||
Открывается после ступени 1. Знание о пользователе на дату и обогащение
|
||||
отчета своим словарем.
|
||||
|
||||
### Superset и BI
|
||||
|
||||
Открывается после ступени 2. [Свой дашборд в Superset](superset-dashboard.md):
|
||||
свои объекты BI живут отдельно от стендовых.
|
||||
|
||||
### Инженерия стенда
|
||||
|
||||
Открывается после ступени 1. Прием и хранение данных, раскладка по шардам,
|
||||
повторная обработка дня и обновление витрин.
|
||||
|
||||
### Что делать, когда стенд сломался
|
||||
|
||||
Открывается после ступени 7. Поломки стенда и runbook по итогам
|
||||
расследований; весь раздел — повышенная сложность.
|
||||
|
||||
## Уборка
|
||||
|
||||
Черновики и опыты за собой сносить: правило проверок стенда —
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# Свой график в Superset
|
||||
|
||||
**Чему учит:** увидеть, как собственный результат из хранилища становится
|
||||
отчетом в BI.
|
||||
|
||||
## Сначала прочитать
|
||||
|
||||
- [«Немного Superset»](../handbook/superset.md);
|
||||
- [задание 3: `dm.session_overview`](session-overview.md).
|
||||
|
||||
## Роль графика
|
||||
|
||||
В задании 3 ты собрал витрину `dm.session_overview_v`. Теперь покажи, с каких
|
||||
устройств чаще уходят после первой страницы. Построй столбиковый график доли
|
||||
отказов по `device_category` за весь период витрины. Измерение одно —
|
||||
`device_category`, метрика тоже одна.
|
||||
|
||||
## Что сделать
|
||||
|
||||
Заведи физический датасет в подключении к `ClickHouse`: схема `dm`, объект
|
||||
`session_overview_v`. Назови по-русски хотя бы две колонки:
|
||||
|
||||
- `device_category` — «Категория устройства»;
|
||||
- `report_date` — «Дата отчета».
|
||||
|
||||
В редакторе датасета, на вкладке «Metrics», создай метрику:
|
||||
|
||||
| Поле | Значение |
|
||||
|---|---|
|
||||
| `Metric Key` | `bounce_share` — ключ метрики и ее SQL-псевдоним |
|
||||
| `Label` | «Доля отказов» |
|
||||
| `SQL expression` | `SUM(bounce_sessions) / SUM(sessions)` |
|
||||
| `D3 format` | `.1%` |
|
||||
|
||||
Доля считается из сумм слагаемых: среднее готовых долей соврет. Поэтому
|
||||
метрике нужно это выражение. Сохрани ее в датасете, а не в графике: подписи и
|
||||
формат задаются в датасете, а график их использует. Так во всех будущих
|
||||
графиках у метрики будут одинаковые подписи. Это правило описано в
|
||||
[справочнике Superset](../architecture/superset.md#дерево-импорта).
|
||||
|
||||
Не используй вкладку «Custom SQL» конструктора графика. Созданная там метрика
|
||||
доступна только этому графику, а нужна метрика датасета.
|
||||
|
||||
Создай столбиковый график с метрикой «Доля отказов». В поле «X-axis» укажи
|
||||
«Категория устройства», а «Dimensions» не заполняй. Дашборд создавать не
|
||||
нужно: сохраненного графика достаточно.
|
||||
|
||||
По умолчанию в графике выбран период «No filter». Оставь его таким или задай
|
||||
явные даты. Относительный период, например «Last week», даст пустой
|
||||
график: модельный календарь стенда отстает от настоящего. Последнюю дату
|
||||
витрины посмотри в SQL Lab:
|
||||
|
||||
```sql
|
||||
SELECT max(report_date)
|
||||
FROM dm.session_overview_v;
|
||||
```
|
||||
|
||||
Стендовые объекты не меняй. Что переживает `make up`, а что стирает
|
||||
`make clean`, описано в главе [«Немного Superset»](../handbook/superset.md#стендовые-объекты-и-ваши).
|
||||
|
||||
## Как проверить себя
|
||||
|
||||
График проверяется глазами, поэтому задачи для него в `homework_check` нет.
|
||||
В SQL Lab выполни запрос:
|
||||
|
||||
```sql
|
||||
SELECT device_category,
|
||||
round(100 * sum(bounce_sessions) / sum(sessions), 1) AS bounce_pct
|
||||
FROM dm.session_overview_v
|
||||
GROUP BY device_category
|
||||
ORDER BY device_category;
|
||||
```
|
||||
|
||||
Сверь с графиком значение для каждой категории. В разделе «Customize» включи
|
||||
«Show Value» или наведи указатель на столбик. Запрос возвращает проценты с одним знаком,
|
||||
как формат `.1%`, поэтому числа должны совпасть один в один.
|
||||
|
||||
## Приемка
|
||||
|
||||
- [ ] создан физический датасет `dm.session_overview_v` в подключении
|
||||
`ClickHouse`;
|
||||
- [ ] в датасете есть метрика «Доля отказов» с выражением
|
||||
`SUM(bounce_sessions) / SUM(sessions)` и форматом `.1%`;
|
||||
- [ ] для `device_category` и `report_date` заданы русские имена «Категория
|
||||
устройства» и «Дата отчета»;
|
||||
- [ ] сохранен столбиковый график доли отказов по категориям устройств без
|
||||
относительного фильтра по времени;
|
||||
- [ ] график сверен с запросом из SQL Lab;
|
||||
- [ ] стендовые объекты не изменены, дашборд не создан.
|
||||
@@ -1,12 +1,11 @@
|
||||
# Задание 6 (необязательное): свой дашборд в Superset
|
||||
# Свой дашборд в Superset
|
||||
|
||||
**Чему учит:** довести свои витрины до потребителя — завести в Superset
|
||||
датасеты поверх публичных представлений, подобрать графики под вопросы и
|
||||
собрать из них один связный экран.
|
||||
|
||||
Эта лаба идет после заданий 1–5 и опирается на их результат. Ее можно
|
||||
пропустить: основной предмет стенда — ClickHouse, а здесь вся работа — в
|
||||
интерфейсе BI.
|
||||
Это факультатив раздела «Superset и BI». Его можно пройти после ступени 2,
|
||||
когда готовы витрины ступени 1.
|
||||
|
||||
## Роль дашборда
|
||||
|
||||
@@ -29,7 +28,7 @@
|
||||
|
||||
Заведи отдельные датасеты и графики, собери из них свой дашборд. Назови его,
|
||||
например, «Мои витрины DM». Это то же правило, по которому DDL домашек лежит
|
||||
в `sql/ddl/70-labs.sql`: стенд привозит свои объекты, менти создает свои.
|
||||
в `sql/ddl/70-labs.sql`: стендовые объекты уже есть, свои создаешь ты.
|
||||
|
||||
## Датасеты
|
||||
|
||||
|
||||
Reference in new issue
Block a user