docs(labs): упрощен язык учебных заданий

- Зачем: начинающим трудно читать задания из-за необъясненных терминов и неестественных формулировок.
- Что: переработаны вводная и 21 задание, названы темы разделов, объяснены термины и сокращены повторы; согласованы правила учебного текста и ссылки.
- Проверка: сохранены 25 блоков SQL и команд и таблицы состава колонок; проверены 153 локальные ссылки и 32 входящие ссылки на разделы; git diff --check прошел.
This commit is contained in:
ddadmin committed 2026-10-18 18:09:43 +02:00
1 parent 3c3eb825e1
commit 4693bc5af9
24 files changed
+782 -684

No files matched your search

+13 -11
View File
@@ -1,7 +1,8 @@
# Как обновлять витрину без полной пересборки
**Чему учит:** выбирать дни для пересчета по новым данным, проверять результат
и повторять незавершенную загрузку.
Вы настроите обновление витрины только за дни, затронутые новыми данными.
Затем проверите, можно ли продолжить загрузку, которая успела записать
лишь часть результатов.
Факультатив повышенной сложности продолжает работу
[«Как новые заказы меняют отчет о посетителях»](identity-over-time.md).
@@ -18,7 +19,7 @@
Удаление данных, исправления старых сессий и пересоздание мира потребовали бы
другого способа обнаружения изменений.
## Создайте витрину и журнал успешных загрузок
## Витрина и журнал загрузок
Создайте две локальные таблицы. Если имена заняты, выберите свои.
@@ -52,7 +53,7 @@ ORDER BY observation_day;
и успешной сверки. Максимальная дата в журнале укажет, какой список
использовался в последней завершенной загрузке.
## Выполните первую загрузку целиком
## Первая загрузка
Убедитесь, что `world_live` стоит на паузе и нет активных прогонов генерации
и обработки. Запустите `etl_pipeline` и дождитесь успеха. Получите текущую
@@ -79,7 +80,7 @@ ORDER BY observation_day;
и различия обоих показателей. Учебную витрину читайте с `FINAL`.
После совпадения запишите дату наблюдения в журнал один раз.
## Найдите дни, которые нужно пересчитать
## Выбор дней для пересчета
Продвиньте мир на один день: `world_next_day` с `days = 1`, затем
`etl_pipeline`; после каждого запуска дождитесь успеха. Сохраните новый
@@ -90,7 +91,7 @@ ORDER BY observation_day;
даты для пересчета без повторов. Он должен учесть два изменения:
- в сессиях появились дни, которых еще нет в вашей витрине;
- в списке на H появились пары, которых не было в списке на P; у этих кук
- в списке на H появились пары, которых не было в списке на P; у этих `client_id`
есть сессии, в том числе за прежние дни.
Сначала выведите даты и выберите один прежний день: какая новая пара
@@ -103,7 +104,7 @@ ORDER BY observation_day;
найденными сравнением списков? Покажите пару, которую ограничение по дате
покупки пропускает.
## Обновите выбранные дни
## Обновление витрины
Напишите второй `INSERT INTO ... SELECT`. Для выбранных дат он должен
рассчитать все сессии с полным списком связей на H. Прибавление числа новых
@@ -117,7 +118,7 @@ ORDER BY observation_day;
Запрос должен вернуть пустой результат, а витрина — остаться прежней.
Повторно записывать H в журнал не требуется.
## Проверьте повторный запуск после частичной загрузки
## Повтор незавершенной загрузки
Снова запустите `world_next_day` с `days = 1`, затем `etl_pipeline`,
дожидаясь успеха каждого. Сохраните новый список связей с его датой H.
@@ -133,7 +134,7 @@ ORDER BY observation_day;
не означает, что витрина обновлена. Что изменится, если записать H в журнал
до обновления витрины?
## Что должно получиться
## Результат работы
Сохраните SQL первой загрузки, выбора дат, обновления и сверки.
После двух новых модельных дней ваша витрина совпадает со стендовой,
@@ -143,8 +144,9 @@ ORDER BY observation_day;
Сравните число пересчитанных дней с полной загрузкой и перечислите,
какие дополнительные данные пришлось хранить. Так можно оценить объем работы.
На небольшом стенде полный пересчет может быть дешевле.
В вашей реализации поиск связей пока читает всю историю покупок —
инкрементальным стал именно пересчет дневной витрины.
В вашей реализации поиск связей пока читает всю историю покупок.
По новым данным обновляется только дневная витрина; такое обновление
называют инкрементальным.
После работы удалите свои `lab_daily_traffic`, `lab_traffic_runs` и
`lab_identity_history` через `DROP TABLE`, если они больше не нужны.