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
|
### Superset и BI
|
||||||
|
|
||||||
Открывается после ступени 2. В задании
|
Открывается после ступени 2. Два самостоятельных задания:
|
||||||
[Свой дашборд в Superset](optional/superset-dashboard.md) вы собираете
|
|
||||||
отдельный дашборд, не меняя объекты стенда.
|
- [Свой дашборд в Superset](optional/superset-dashboard.md): собрать отчет
|
||||||
|
из своих витрин и подтвердить выводы запросами.
|
||||||
|
- [В DBeaver работает, в Superset нет](optional/superset-missing-object.md):
|
||||||
|
выяснить, почему клиенты по-разному видят один объект хранилища.
|
||||||
|
|
||||||
### Инженерия стенда
|
### Инженерия стенда
|
||||||
|
|
||||||
|
|||||||
@@ -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; оба клиента возвращают столько же строк,
|
||||||
|
сколько исходная витрина;
|
||||||
|
- [ ] после опыта вы удалили учебное представление с обеих нод.
|
||||||
@@ -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` на второй ноде; после создания
|
||||||
|
на кластере обе ноды возвращают тот же счет, что исходная витрина.
|
||||||
|
|
||||||
### Инженерия стенда
|
### Инженерия стенда
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user