Зачем: начинающим ученикам трудно читать главы без пояснений терминов и ожидаемого результата примеров. Что: уточнены заголовки и объяснения в пяти главах и вводной, добавлена сверка графика с SQL, обновлены ссылки из заданий и документации генератора. Проверка: SQL и команды сохранены, локальные ссылки проверены; git diff --check пройден. Ревью смысла Sol 6.1 high замечаний не выявило, новые пояснения дополнительно сверены с кодом и настройками.
4.9 KiB
Генератор: откуда берутся данные
Генератор имитирует работу двух систем интернет-магазина. Счетчик
на сайте отправляет записи о действиях посетителей в топик hits. Серверная часть
магазина раз в модельные сутки выгружает состояние заказов в топик orders.
Эта дневная выгрузка называется слепком.
События сайта и заказы
Событие содержит сведения о действии посетителя: например, время, адрес страницы и идентификатор посетителя. Формат соответствует образцу выгрузки Яндекс Метрики. Генератор создает три вида событий: просмотр страницы, добавление в корзину и покупку. Все колонки перечислены в описании выгрузки.
Заказ содержит сведения о покупке со стороны магазина: товары, суммы и состояние заказа. После оформления он еще может измениться, например при отмене. Каждый дневной слепок содержит текущее состояние заказов, оформленных за последние семь модельных дней. Состав и формат слепка разобраны в отдельном справочнике.
Почему начальные данные повторяются
Случайные решения генератора зависят от заданного числа —
зерна генерации — и номера дня.
При неизменных коде, каталоге товаров и настройках одинаковые зерно и день
дают одинаковые события. Поэтому при создании стенда вы каждый раз
получаете те же начальные данные. Повторный make up на работающем стенде
сохраняет уже загруженные данные.
В файле data/world-inventory.json записаны зерно, версия генератора,
число событий и контрольная сумма за каждый из восьми начальных дней.
В документации этот файл называется паспортом мира. С ним можно сверить
результат генерации и проверить, все ли события загрузились в ODS.
Запуск генератора
На стенде генератором управляют даги модельного времени. Его можно запустить и напрямую. Команды собраны в справочнике генератора и модельного времени.
У генератора два режима. Пакетный отправляет все события дня без пауз. В живом режиме события поступают постепенно, как в работающем магазине, но время идет ускоренно: модельные сутки занимают около 24 минут.
Сверка с паспортом мира
Подключитесь из DBeaver по инструкции и выполните запрос:
SELECT EventDate, count() AS events
FROM ods.event_v
GROUP BY EventDate
ORDER BY EventDate;
Сравните число событий за каждый из первых восьми дней со значением
events за ту же дату в паспорте мира.
Числа должны совпасть. Если вы уже генерировали следующие дни,
в результате запроса будут дополнительные даты; в паспорте их нет.
Учебные задания и справочники
Подробнее генератор разобран в README папки
generator/ и в справочнике его
устройства. Теперь можно переходить
к учебным заданиям.