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 ### Superset и BI
Открывается после ступени 2. В задании Открывается после ступени 2. Два самостоятельных задания:
[Свой дашборд в Superset](optional/superset-dashboard.md) вы собираете
отдельный дашборд, не меняя объекты стенда. - [Свой дашборд в Superset](optional/superset-dashboard.md): собрать отчет
из своих витрин и подтвердить выводы запросами.
- [В DBeaver работает, в Superset нет](optional/superset-missing-object.md):
выяснить, почему клиенты по-разному видят один объект хранилища.
### Инженерия стенда ### Инженерия стенда
+43 -18
View File
@@ -1,13 +1,12 @@
# Свой дашборд в Superset # Свой дашборд в Superset
**Чему учит:** довести свои витрины до потребителя — завести в Superset **Чему учит:** собрать из своих витрин отчет о поведении посетителей,
датасеты поверх публичных представлений, подобрать графики под вопросы и подобрать графики под вопросы и разместить их на одном понятном экране.
собрать из них один связный экран.
Это факультатив раздела «Superset и BI». Его можно пройти после ступени 2, Это факультатив раздела «Superset и BI». Его можно пройти после ступени 2,
когда готовы витрины ступени 1. когда готовы витрины ступени 1.
## Роль дашборда ## На какие вопросы ответит дашборд
Соберите обзор трафика и поведения посетителей. Он должен отвечать на три Соберите обзор трафика и поведения посетителей. Он должен отвечать на три
вопроса: что происходило в магазине, какие страницы, устройства и рекламные вопроса: что происходило в магазине, какие страницы, устройства и рекламные
@@ -26,14 +25,17 @@
таких объектов описан в [доке Superset](../../architecture/superset.md), «Импорт таких объектов описан в [доке Superset](../../architecture/superset.md), «Импорт
при каждой инициализации». при каждой инициализации».
Заведите отдельные датасеты и графики, соберите из них свой дашборд. Используйте свои датасеты и графики, соберите из них свой дашборд.
Назовите его, например, «Мои витрины DM». Это то же правило, по которому DDL Назовите его, например, «Мои витрины DM». Это то же правило, по которому DDL
домашек лежит в `sql/ddl/70-labs.sql`: стендовые объекты уже есть, свои домашек лежит в `sql/ddl/70-labs.sql`: стендовые объекты уже есть, свои
создаете вы. создаете вы.
## Датасеты ## Датасеты
Заведите в подключении `ClickHouse` пять физических датасетов схемы `dm`: Датасет `session_overview_v`, его метрика доли отказов и график уже готовы
после [ступени 2](../2-1-superset-chart.md). Используйте их здесь. Добавьте
недостающие датасеты, чтобы в подключении `ClickHouse` были представлены
пять публичных представлений схемы `dm`:
- `events_enriched_v`; - `events_enriched_v`;
- `top_pages_daily_v`; - `top_pages_daily_v`;
@@ -56,14 +58,25 @@
Для долей используйте слагаемые из витрин. Например, доля отказов считается Для долей используйте слагаемые из витрин. Например, доля отказов считается
как сумма `bounce_sessions`, деленная на сумму `sessions`. Среднее по готовым как сумма `bounce_sessions`, деленная на сумму `sessions`. Среднее по готовым
долям для такого графика не подходит — урок задания 3 остается в силе. долям для такого графика не подходит.
Названия графиков, осей и показателей должны объяснять экран без чтения SQL. Названия графиков, осей и показателей должны объяснять экран без чтения 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 основной программы. Открывается после ступени 2 основной программы.
- **Свой дашборд.** Готовая лаба - **[Свой дашборд](../labs/optional/superset-dashboard.md).** Менти использует
[`docs/labs/optional/superset-dashboard.md`](../labs/optional/superset-dashboard.md) учит результат ступени 2, собирает отчет из пяти своих витрин и подтверждает
хранить пользовательские объекты отдельно от стендовых. выводы запросами. Пользовательские объекты остаются отдельно от стендовых.
- **Почему дашборд не видит объект на второй ноде.** Забытый `ON CLUSTER` может - **[В DBeaver работает, в Superset нет](../labs/optional/superset-missing-object.md).**
остаться незаметным до тех пор, пока дашборд не обратится ко второй ноде. Менти создает отдельное представление на первой ноде и расследует ошибку
чтения из Superset, подключенного ко второй. Опыт заканчивается объяснением,
исправлением DDL и удалением учебного объекта.
Задания самостоятельны: расследование использует готовую витрину стенда.
Отсутствие объекта проверяется в SQL Lab, поскольку создание физического
датасета может остановиться раньше, чем появится график. Чтение только одного
шарда остается материалом инженерного раздела: это отдельная причина
неполного результата, которую добавление `ON CLUSTER` само по себе не устраняет.
Технический опыт проверен 2026-09-13 на ClickHouse 26.3.17.56: локальное
представление недоступно пользователю `bi` на второй ноде; после создания
на кластере обе ноды возвращают тот же счет, что исходная витрина.
### Инженерия стенда ### Инженерия стенда