docs(labs): упрощен язык учебных заданий
- Зачем: начинающим трудно читать задания из-за необъясненных терминов и неестественных формулировок. - Что: переработаны вводная и 21 задание, названы темы разделов, объяснены термины и сокращены повторы; согласованы правила учебного текста и ссылки. - Проверка: сохранены 25 блоков SQL и команд и таблицы состава колонок; проверены 153 локальные ссылки и 32 входящие ссылки на разделы; git diff --check прошел.
This commit is contained in:
1 parent
3c3eb825e1
commit
4693bc5af9
24 files changed
+782
-684
No files matched your search
@@ -1,37 +1,38 @@
|
||||
# Задание 1: `dm.events_enriched_v`
|
||||
# Задание 1: события для анализа, `dm.events_enriched_v`
|
||||
|
||||
**Чему учит:** подготовить удобный для анализа набор полей события
|
||||
и обойтись представлением, сохранив одну строку на событие.
|
||||
Вы подготовите представление с полями для анализа событий. Оно будет
|
||||
добавлять вычисляемые поля при чтении, сохраняя одну строку на событие.
|
||||
|
||||
## Сначала прочитать
|
||||
## Подготовка
|
||||
|
||||
- [«Хранилище и его слои»](../handbook/storage-layers.md).
|
||||
- [Как применить свой DDL](README.md#как-применить-свой-ddl): файл для решения
|
||||
- [Выполнение SQL в DBeaver](README.md#выполнение-sql-в-dbeaver): файл для решения
|
||||
и подключение с правами на создание витрины.
|
||||
|
||||
## Для чего нужна витрина
|
||||
## Данные для анализа событий
|
||||
|
||||
В `dds.event_v` 44 колонки, включая технические поля источника и массивы
|
||||
товаров. Для анализа событий в Superset нужны деловые поля и три готовых
|
||||
значения: час события, путь страницы и домен перехода. Тогда вам не придется
|
||||
товаров. Для анализа событий в Superset нужны сведения о посетителе и его
|
||||
действиях, а также три вычисляемых поля: час события, путь страницы и домен,
|
||||
с которого пришел посетитель. Тогда вам не придется
|
||||
повторять эти выражения в каждом запросе.
|
||||
|
||||
Витрины следующих заданий читают DDS напрямую. Использовать
|
||||
`dm.events_enriched_v` как источник для них не нужно: задания независимы, их
|
||||
можно выполнять в любом порядке.
|
||||
|
||||
## Что сделать
|
||||
## Создание представления
|
||||
|
||||
Создайте обычное представление `CREATE VIEW dm.events_enriched_v`.
|
||||
Единственный источник — `dds.event_v`. Зерно — **событие**: каждой строке
|
||||
источника соответствует одна строка витрины.
|
||||
Единственный источник: `dds.event_v`. Каждой строке источника должна
|
||||
соответствовать ровно одна строка витрины: одно событие.
|
||||
|
||||
Физическая таблица, таблица-донор и задача в `dm_transform` не нужны.
|
||||
Представление не хранит строки, поэтому ключ шардирования и пересборка ему
|
||||
не требуются.
|
||||
Представление выполняет запрос при чтении и не хранит отдельную копию данных.
|
||||
Для него не нужно создавать таблицы или добавлять задачу в `dm_transform`.
|
||||
|
||||
Укажите колонки явно. Иначе новая колонка источника попадет в витрину
|
||||
автоматически, и договор с потребителем изменится без вашего участия.
|
||||
автоматически. Отчет получит ее, даже если вы не собирались менять его набор
|
||||
полей.
|
||||
|
||||
| Группа | Колонки |
|
||||
|---|---|
|
||||
@@ -57,9 +58,7 @@ DDS читают из ODS без отдельной загрузки. Эти с
|
||||
## Типичная ошибка
|
||||
|
||||
Не разворачивайте массивы товаров через `ARRAY JOIN`. У события с тремя
|
||||
позициями получится три строки. Зерно изменится. Витрину с новым зерном на
|
||||
стенде хранят готовым агрегатом — причины описаны в разделе [«Как принято на
|
||||
ступени 1»](README.md#как-принято-на-ступени-1).
|
||||
позициями получится три строки вместо одной.
|
||||
|
||||
Главная опасность — потеря событий с пустым массивом товаров: `ARRAY JOIN`
|
||||
исключает их из результата. Товары есть только в событиях корзины и покупки.
|
||||
@@ -68,9 +67,9 @@ DDS читают из ODS без отдельной загрузки. Эти с
|
||||
по-прежнему будет выглядеть таблицей событий.
|
||||
|
||||
Сохраните массивы как в источнике. Для анализа отдельных товарных позиций
|
||||
нужна другая витрина с другим зерном и именем.
|
||||
нужна отдельная витрина, где одна строка соответствует товарной позиции.
|
||||
|
||||
## Как проверить себя
|
||||
## Проверка результата
|
||||
|
||||
После применения DDL откройте Airflow по [адресу из README](../../README.md#адреса-и-пароли),
|
||||
найдите даг `homework_check` и запустите его вручную. В новом запуске откройте
|
||||
@@ -79,16 +78,15 @@ DDS читают из ODS без отдельной загрузки. Эти с
|
||||
расхождениях с источником — дни и примеры несовпадений. Задачи еще не
|
||||
созданных витрин будут красными; это ожидаемо и не мешает проверке первой.
|
||||
|
||||
Деловой ключ — `event_id` внутри дня. Получите результат прямо из
|
||||
`dds.event_v` за тот же день. Соедините его с витриной полным внешним
|
||||
соединением по `event_id`. Посчитайте строки, где ключ отсутствует с одной
|
||||
из сторон или различаются значения деловых колонок. Расхождений должно быть
|
||||
ноль.
|
||||
Выберите день и прочитайте его события из `dds.event_v` и своей витрины.
|
||||
Сопоставьте строки по `event_id` через `FULL OUTER JOIN`.
|
||||
Найдите события, которые есть только с одной стороны, и события, у которых
|
||||
различаются перенесенные из источника поля. Расхождений должно быть ноль.
|
||||
|
||||
Отдельно сверьте `event_hour`, `page_path` и `referer_host` с теми же
|
||||
выражениями, рассчитанными прямо по `dds.event_v`.
|
||||
|
||||
## Что должно получиться
|
||||
## Результат работы
|
||||
|
||||
- [ ] у вас есть `dm.events_enriched_v` с явно перечисленными колонками;
|
||||
- [ ] вы сверили число строк и набор `event_id` с `dds.event_v` за каждый
|
||||
|
||||
Reference in new issue
Block a user