docs(labs): оформлен факультативный раздел Superset и BI

Зачем: дать менти два самостоятельных задания по BI после ступени 2.

Что: обновлено ТЗ дашборда, добавлен опыт с объектом на одной ноде, уточнены программа и индекс. Формулировки обращены к учащемуся.

Проверка: локальные ссылки и git diff --check прошли. На ClickHouse 26.3.17.56 воспроизведены ошибка чтения со второй ноды и исправление; учебный объект удален. Полный проход через интерфейс Superset не выполнялся.
This commit is contained in:
ddadmin committed 2026-09-13 10:34:48 -04:00
1 parent 3ac3911e95
commit a03838b953
4 files changed
+136 -26

No files matched your search

+6 -3
View File
@@ -138,9 +138,12 @@ DM](../architecture/dm.md).
### Superset и BI
Открывается после ступени 2. В задании
[Свой дашборд в Superset](optional/superset-dashboard.md) вы собираете
отдельный дашборд, не меняя объекты стенда.
Открывается после ступени 2. Два самостоятельных задания:
- [Свой дашборд в Superset](optional/superset-dashboard.md): собрать отчет
из своих витрин и подтвердить выводы запросами.
- [В DBeaver работает, в Superset нет](optional/superset-missing-object.md):
выяснить, почему клиенты по-разному видят один объект хранилища.
### Инженерия стенда
+43 -18
View File
@@ -1,13 +1,12 @@
# Свой дашборд в Superset
**Чему учит:** довести свои витрины до потребителя — завести в Superset
датасеты поверх публичных представлений, подобрать графики под вопросы и
собрать из них один связный экран.
**Чему учит:** собрать из своих витрин отчет о поведении посетителей,
подобрать графики под вопросы и разместить их на одном понятном экране.
Это факультатив раздела «Superset и BI». Его можно пройти после ступени 2,
когда готовы витрины ступени 1.
## Роль дашборда
## На какие вопросы ответит дашборд
Соберите обзор трафика и поведения посетителей. Он должен отвечать на три
вопроса: что происходило в магазине, какие страницы, устройства и рекламные
@@ -26,14 +25,17 @@
таких объектов описан в [доке Superset](../../architecture/superset.md), «Импорт
при каждой инициализации».
Заведите отдельные датасеты и графики, соберите из них свой дашборд.
Используйте свои датасеты и графики, соберите из них свой дашборд.
Назовите его, например, «Мои витрины DM». Это то же правило, по которому DDL
домашек лежит в `sql/ddl/70-labs.sql`: стендовые объекты уже есть, свои
создаете вы.
## Датасеты
Заведите в подключении `ClickHouse` пять физических датасетов схемы `dm`:
Датасет `session_overview_v`, его метрика доли отказов и график уже готовы
после [ступени 2](../2-1-superset-chart.md). Используйте их здесь. Добавьте
недостающие датасеты, чтобы в подключении `ClickHouse` были представлены
пять публичных представлений схемы `dm`:
- `events_enriched_v`;
- `top_pages_daily_v`;
@@ -56,14 +58,25 @@
Для долей используйте слагаемые из витрин. Например, доля отказов считается
как сумма `bounce_sessions`, деленная на сумму `sessions`. Среднее по готовым
долям для такого графика не подходит — урок задания 3 остается в силе.
долям для такого графика не подходит.
Названия графиков, осей и показателей должны объяснять экран без чтения SQL.
## Период отчета
Выберите явный период из модельного календаря и задайте его в графиках
поведения посетителей. Последнюю доступную дату посмотрите в своих витринах.
Относительный период вроде `Last week` отсчитывается от настоящего времени
и может дать пустой экран.
Ошибки приема считаются по `load_date`, дню загрузки, а поведение посетителей
по модельному времени. Для панели ошибок выберите период загрузки отдельно
и укажите его в подписи. Общий фильтр времени для всего дашборда не требуется.
## Как проверить себя
Эта лаба проверяется глазами. У расположения панелей и понятных подписей нет
счетного инварианта, поэтому задачи для нее в `homework_check` нет.
Автоматической проверки этого задания нет. Числа вы сверите запросами,
а понятность графиков проверите по подписям.
Откройте список дашбордов и проверьте:
@@ -75,14 +88,26 @@
серверную;
- пустой график ошибок нормален, если в таблицах брака сейчас нет строк.
Последний проход сделайте как читатель: найдите на экране самый заметный
канал, страницу и устройство, затем проверьте, понятно ли из подписей, что
именно сравнивается. Если ответ приходится угадывать, поправьте график или
его название.
По готовому экрану запишите три коротких вывода за выбранный период:
## Приемка
- какой рекламный канал дал больше покупок;
- какая страница получила больше просмотров;
- у какой категории устройств выше доля отказов.
- [ ] пять датасетов читают публичные представления витрин заданий 1–5;
- [ ] создан отдельный дашборд, стендовые объекты не изменены;
- [ ] каждая витрина представлена хотя бы одним графиком;
- [ ] дашборд проверен глазами по разделу выше.
Для каждого вывода укажите период и число, на которое опираетесь. Проверьте
его запросом к своей витрине в SQL Lab с тем же периодом и способом расчета.
Сохраните запросы рядом с выводами. При равенстве значений назовите всех
лидеров. Если данных нет, это тоже результат: подтвердите отсутствие строк
запросом.
Проверьте, можно ли найти эти ответы по одним подписям графиков. Если есть
возможность, попросите другого человека прочитать экран без ваших пояснений.
## Что должно получиться
- [ ] у вас есть пять датасетов поверх публичных представлений витрин заданий 1–5;
- [ ] вы собрали свой дашборд, сохранив стендовые объекты без изменений;
- [ ] на дашборде есть хотя бы один график от каждой витрины;
- [ ] вы проверили, что графики и подписи понятны по вопросам из раздела выше;
- [ ] вы записали три вывода и сверили числа с SQL; в отчете указаны периоды
поведения посетителей и ошибок приема.
@@ -0,0 +1,70 @@
# В DBeaver работает, в Superset нет
**Чему учит:** найти причину, по которой один клиент читает объект
хранилища, а другой его не видит.
Факультатив доступен после [ступени 2](../2-1-superset-chart.md).
Свой дашборд для опыта не нужен. Используйте готовую витрину стенда
`dm.daily_traffic_v`.
## Подготовьте опыт
В DBeaver подключитесь к первой ноде пользователем `etl`, как описано
в разделе [«Как применить свой DDL»](../README.md#как-применить-свой-ddl).
Для опыта создайте отдельное представление:
```sql
CREATE VIEW dm.bi_node_probe_v AS
SELECT * FROM dm.daily_traffic_v;
```
Запрос выполнится успешно. Теперь проверьте, откуда можно прочитать
созданное представление. Начните с того же подключения:
```sql
SELECT count() FROM dm.bi_node_probe_v;
```
Повторите запрос в SQL Lab Superset, выбрав подключение `ClickHouse`.
Сохраните текст ошибки.
## Найдите причину
Выясните, к каким серверам обращаются DBeaver и Superset. Адреса подключения
показывают настройки клиентов, а имя ответившего сервера можно спросить
запросом `SELECT hostName()`.
Проверьте наличие `dm.bi_node_probe_v` на обеих нодах. Для второй ноды
заведите подключение DBeaver с портом из
[README](../../../README.md#подключиться-из-dbeaver). Запишите, где объект
есть, и объясните, почему успешного создания в первом подключении оказалось
недостаточно.
Исправьте DDL так, чтобы представление появилось на обеих нодах. Подключение
Superset должно остаться прежним. Сохраните исправленный DDL и повторите
исходный запрос в обоих клиентах.
Если застряли, прочитайте раздел «Устройство зоны» в
[справочнике Superset](../../architecture/superset.md#устройство-зоны) и
[описание распределенного DDL ClickHouse](https://clickhouse.com/docs/reference/statements/distributed-ddl).
## Как проверить себя
В обоих клиентах запрос к вашему представлению должен вернуть столько же
строк, сколько `SELECT count() FROM dm.daily_traffic_v`. Сравнивайте результаты
при завершенном прогоне конвейера, пока мир не продвигается.
Объясните причину ошибки через три факта: куда пришел DDL, куда пришел
запрос Superset и на каких нодах существовало представление.
После опыта удалите только `dm.bi_node_probe_v` на обеих нодах. Не включайте
его в постоянный DDL домашних витрин: это временный объект расследования.
## Что должно получиться
- [ ] у вас сохранены успешный запрос из DBeaver и ошибка из SQL Lab;
- [ ] вы можете объяснить, к каким серверам подключены клиенты, где было
создано представление и почему Superset его не видел;
- [ ] у вас есть исправленный DDL; оба клиента возвращают столько же строк,
сколько исходная витрина;
- [ ] после опыта вы удалили учебное представление с обеих нод.
+17 -5
View File
@@ -171,11 +171,23 @@
Открывается после ступени 2 основной программы.
- **Свой дашборд.** Готовая лаба
[`docs/labs/optional/superset-dashboard.md`](../labs/optional/superset-dashboard.md) учит
хранить пользовательские объекты отдельно от стендовых.
- **Почему дашборд не видит объект на второй ноде.** Забытый `ON CLUSTER` может
остаться незаметным до тех пор, пока дашборд не обратится ко второй ноде.
- **[Свой дашборд](../labs/optional/superset-dashboard.md).** Менти использует
результат ступени 2, собирает отчет из пяти своих витрин и подтверждает
выводы запросами. Пользовательские объекты остаются отдельно от стендовых.
- **[В DBeaver работает, в Superset нет](../labs/optional/superset-missing-object.md).**
Менти создает отдельное представление на первой ноде и расследует ошибку
чтения из Superset, подключенного ко второй. Опыт заканчивается объяснением,
исправлением DDL и удалением учебного объекта.
Задания самостоятельны: расследование использует готовую витрину стенда.
Отсутствие объекта проверяется в SQL Lab, поскольку создание физического
датасета может остановиться раньше, чем появится график. Чтение только одного
шарда остается материалом инженерного раздела: это отдельная причина
неполного результата, которую добавление `ON CLUSTER` само по себе не устраняет.
Технический опыт проверен 2026-09-13 на ClickHouse 26.3.17.56: локальное
представление недоступно пользователю `bi` на второй ноде; после создания
на кластере обе ноды возвращают тот же счет, что исходная витрина.
### Инженерия стенда