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,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`, если они больше не нужны.
|
||||
Reference in new issue
Block a user