docs(labs): оформлен факультативный раздел Superset и BI
Зачем: дать менти два самостоятельных задания по BI после ступени 2. Что: обновлено ТЗ дашборда, добавлен опыт с объектом на одной ноде, уточнены программа и индекс. Формулировки обращены к учащемуся. Проверка: локальные ссылки и git diff --check прошли. На ClickHouse 26.3.17.56 воспроизведены ошибка чтения со второй ноды и исправление; учебный объект удален. Полный проход через интерфейс Superset не выполнялся.
This commit is contained in:
1 parent
3ac3911e95
commit
a03838b953
4 files changed
+136
-26
No files matched your search
+6
-3
@@ -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):
|
||||
выяснить, почему клиенты по-разному видят один объект хранилища.
|
||||
|
||||
### Инженерия стенда
|
||||
|
||||
|
||||
@@ -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; оба клиента возвращают столько же строк,
|
||||
сколько исходная витрина;
|
||||
- [ ] после опыта вы удалили учебное представление с обеих нод.
|
||||
@@ -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` на второй ноде; после создания
|
||||
на кластере обе ноды возвращают тот же счет, что исходная витрина.
|
||||
|
||||
### Инженерия стенда
|
||||
|
||||
|
||||
Reference in new issue
Block a user