Files
clickstream-data-platform/docs/handbook/generator.md
T
ddadminandClaude Fable 5.1 043d1c1382 docs(handbook): четыре главы переписаны живым русским
Зачем: владелец прочел главы и нашел неестественные фразы: дашборды
«спрашивают», даги «двигают ось», заказ «ездит в слепках», Superset —
«витрины глазами», объекты «приезжают из файлов». Читателю такие
образы надо расшифровывать, а урок в них не прячется.

Что: в четырех главах олицетворения заменены прямыми формулировками,
«позиция мира» и «шаговый даг» раскрыты через world_position и имена
дагов, паспорт мира описан по составу и назначению, окно слепка
заказов объяснено словами, режимы генератора и правило импорта
Superset сказаны прямо. Тире и стрелки оставлены: это домашний стиль.

Проверка: проверки тикета #220 на битые ссылки и запретные слова
пусты, строки прозы не длиннее 80 знаков, git diff --check чист.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 02:00:37 -04:00

4.1 KiB

Генератор: откуда берутся данные

Генератор изображает две системы интернет-магазина. Первая — счетчик на сайте, он шлет события в топик hits. Вторая — бэкенд магазина, он раз в модельные сутки выгружает слепок заказов в топик orders.

Что он производит

Событие — широкая строка по образцу выгрузки Яндекс Метрики. Генератор создает три вида событий: просмотр страницы, корзину и покупку. Все колонки перечислены в описании выгрузки.

Заказ — та же покупка, но записанная бэкендом магазина, с суммами в деньгах. Семь модельных дней после оформления заказ еще может измениться, поэтому каждый дневной слепок несет заказы за последние семь дней в их текущем состоянии. Устройство и форма слепка разобраны в отдельном справочнике.

Почему данные всегда одни и те же

Генератор не берет случайность извне. Все его случайные решения выводятся из зерна — одного числа в настройках — и из номера дня. То же зерно и тот же номер дня дают ровно те же события, поэтому стартовый мир одинаков при каждом make up.

Рядом лежит паспорт мира, data/world-inventory.json: зерно, версия генератора и по строке на каждый день с числом событий и контрольной суммой. По нему проверяют, что генератор собрал тот же мир, что и раньше, и что в ODS все доехало без потерь. Паспорт описывает только восемь дней стартового мира.

Кто его запускает

На стенде генератором управляют даги модельного времени. Его можно запустить и напрямую. Команды собраны в справочнике мира.

У генератора два режима. Пакетный отправляет весь день разом. Живой шлет события по ходу модельных суток; сутки идут ускоренно и занимают около двадцати четырех минут.

Посмотрите сами

Подключитесь из DBeaver по инструкции и выполните запрос:

SELECT EventDate, count() AS events
FROM ods.event_v
GROUP BY EventDate
ORDER BY EventDate;

Сравните первые восемь дней с восемью строками в паспорте мира: числа совпадут. Дни, сыгранные после стартового мира, в паспорте не записаны. Так и задумано.

Куда дальше

Подробнее генератор разобран в README папки generator/ и в справочнике его устройства. На этом путеводитель заканчивается: дальше справочники и учебные задания.