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:
ddadmin committed 2026-09-03 17:12:37 -04:00
1 parent 92948986a0
commit 830efa7ef4
3 files changed
+151 -22

No files matched your search

+58 -17
View File
@@ -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) | зерно решает, на какие вопросы витрина уже не ответит | | 3 | [`session_overview`](session-overview.md) | зерно решает, на какие вопросы витрина уже не ответит |
| 4 | [`dq_errors_daily`](dq-errors-daily.md) | у брака свой день и свой срок жизни | | 4 | [`dq_errors_daily`](dq-errors-daily.md) | у брака свой день и свой срок жизни |
| 5 | [`utm_effectiveness`](utm-effectiveness.md) | `declared_` в имени — предупреждение, а не украшение | | 5 | [`utm_effectiveness`](utm-effectiveness.md) | `declared_` в имени — предупреждение, а не украшение |
| 6 | [Свой дашборд в Superset](superset-dashboard.md) — необязательная лаба | свои объекты BI живут отдельно от стендовых |
## Общие правила Общее устройство слоя — [дока DM](../architecture/dm.md). Она отвечает на
вопросы «почему так», задание отвечает на вопрос «что сделать».
Они одни для пяти заданий по витринам, поэтому записаны здесь, а не ## Общие правила ступени 1
Они одни для пяти заданий по витринам ступени 1, поэтому записаны здесь, а не
повторяются в каждом ТЗ. повторяются в каждом ТЗ.
**Читать — через `_v`.** Публичный договор сущности DDS — представление с **Читать — через `_v`.** Публичный договор сущности DDS — представление с
@@ -72,7 +82,7 @@ DDS, и задания остаются независимыми. Исключе
Списывать с нее устройство можно и нужно; списывать состав колонок — нет, Списывать с нее устройство можно и нужно; списывать состав колонок — нет,
он у каждой витрины свой. он у каждой витрины свой.
## Самопроверка ## Самопроверка ступени 1
Даг `homework_check` запускается рукой, расписания у него нет. Задача Даг `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 по итогам
расследований; весь раздел — повышенная сложность.
## Уборка ## Уборка
Черновики и опыты за собой сносить: правило проверок стенда — Черновики и опыты за собой сносить: правило проверок стенда —
+89
View File
@@ -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;
- [ ] стендовые объекты не изменены, дашборд не создан.
+4 -5
View File
@@ -1,12 +1,11 @@
# Задание 6 (необязательное): свой дашборд в Superset # Свой дашборд в Superset
**Чему учит:** довести свои витрины до потребителя — завести в Superset **Чему учит:** довести свои витрины до потребителя — завести в Superset
датасеты поверх публичных представлений, подобрать графики под вопросы и датасеты поверх публичных представлений, подобрать графики под вопросы и
собрать из них один связный экран. собрать из них один связный экран.
Эта лаба идет после заданий 1–5 и опирается на их результат. Ее можно Это факультатив раздела «Superset и BI». Его можно пройти после ступени 2,
пропустить: основной предмет стенда — ClickHouse, а здесь вся работа — в когда готовы витрины ступени 1.
интерфейсе BI.
## Роль дашборда ## Роль дашборда
@@ -29,7 +28,7 @@
Заведи отдельные датасеты и графики, собери из них свой дашборд. Назови его, Заведи отдельные датасеты и графики, собери из них свой дашборд. Назови его,
например, «Мои витрины DM». Это то же правило, по которому DDL домашек лежит например, «Мои витрины DM». Это то же правило, по которому DDL домашек лежит
в `sql/ddl/70-labs.sql`: стенд привозит свои объекты, менти создает свои. в `sql/ddl/70-labs.sql`: стендовые объекты уже есть, свои создаешь ты.
## Датасеты ## Датасеты