Зачем: после главы о хранилище путеводитель обещал еще четыре главы, а вместо них стояли заглушки «Пока главы нет…». Без них читатель не видит, кто двигает мир и раскладывает данные по слоям, куда смотреть в Grafana, как витрина становится графиком и откуда берутся данные. Что: docs/handbook/airflow-dags.md, monitoring.md, superset.md, generator.md — по скелетам тикета #220, форма — как у главы о хранилище. Сквозная линия трех глав: ход мира на день D везет слепок заказов дня D−1, поэтому выручка всегда на день позади кликстрима. README путеводителя ведет заголовками в файлы глав, заглушки убраны; «Куда дальше» главы о хранилище ведет прямо в главу об Airflow. Проверка: три SELECT из глав прогнаны на живом стенде от analyst — трафик получил сыгранный день, выручка только предыдущий, счетчики первых восьми дней совпали с паспортом мира. Скрипт проверки ссылок и запретных слов из тикета пуст. Постановка отревьюена Opus (18 находок внесены); главы прошли саморевью Sol и два слепых ревью Opus — факты и проза (ai-text-lint плюс оптика литературного русского): 25 находок внесены, 1 отклонена. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
3.3 KiB
Генератор: откуда берутся данные
Генератор притворяется двумя системами магазина. Счетчик сайта шлет события в
топик hits. Бэкенд раз в модельные сутки выгружает слепок заказов в топик
orders.
Что он производит
Событие — широкая строка по образцу выгрузки Яндекс Метрики. Генератор создает три вида событий: просмотр страницы, корзину и покупку. Все колонки перечислены в описании выгрузки.
Заказ — вторая проекция той же покупки, с деньгами магазина. Заказ ездит в слепках, пока может измениться, — семь модельных дней. Устройство и форму слепка разбирает отдельный справочник.
Почему данные всегда одни и те же
Модельный день зависит от зерна — числа,
из которого генератор разворачивает всю свою случайность, — и от номера дня.
Одна и та же пара дает те же события, поэтому стартовый мир одинаков при каждом
make up.
Паспорт data/world-inventory.json отвечает на один вопрос: тот ли это мир. Он
охватывает только восемь дней стартового мира.
Кто его запускает
На стенде генератором управляют даги модельного времени. Его можно запустить и напрямую. Команды собраны в справочнике мира.
У генератора два режима. Пакетный отправляет день пачкой. Живой проигрывает модельные сутки в ускоренном темпе.
Посмотрите сами
Подключитесь из DBeaver по инструкции и выполните запрос:
SELECT EventDate, count() AS events
FROM ods.event_v
GROUP BY EventDate
ORDER BY EventDate;
Сравните первые восемь дней с восемью строками в паспорте мира: числа совпадут. Дни, сыгранные после стартового мира, в паспорте не записаны. Это ожидаемо.
Куда дальше
Глубже генератор разобран в generator/ и в
справочнике его устройства. Тропа
путеводителя закончена: дальше идут справочники и учебные
задания.