docs(handbook): написаны четыре главы путеводителя
Зачем: после главы о хранилище путеводитель обещал еще четыре главы, а вместо них стояли заглушки «Пока главы нет…». Без них читатель не видит, кто двигает мир и раскладывает данные по слоям, куда смотреть в 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>
This commit is contained in:
1 parent
b15d5253ee
commit
ac21399fe4
6 files changed
+306
-16
No files matched your search
@@ -0,0 +1,57 @@
|
||||
# Генератор: откуда берутся данные
|
||||
|
||||
Генератор притворяется двумя системами магазина. Счетчик сайта шлет события в
|
||||
топик `hits`. Бэкенд раз в модельные сутки выгружает слепок заказов в топик
|
||||
`orders`.
|
||||
|
||||
## Что он производит
|
||||
|
||||
Событие — широкая строка по образцу выгрузки Яндекс Метрики. Генератор создает
|
||||
три вида событий: просмотр страницы, корзину и покупку. Все колонки перечислены
|
||||
в [описании выгрузки](../formats/clickstream-event.md).
|
||||
|
||||
Заказ — вторая проекция той же покупки, с деньгами магазина. Заказ ездит в
|
||||
слепках, пока может измениться, — семь модельных дней. Устройство и форму слепка
|
||||
разбирает [отдельный справочник](../architecture/orders/snapshot.md).
|
||||
|
||||
## Почему данные всегда одни и те же
|
||||
|
||||
Модельный день зависит от [зерна](../architecture/generator/seeds.md) — числа,
|
||||
из которого генератор разворачивает всю свою случайность, — и от номера дня.
|
||||
Одна и та же пара дает те же события, поэтому стартовый мир одинаков при каждом
|
||||
`make up`.
|
||||
|
||||
Паспорт `data/world-inventory.json` отвечает на один вопрос: тот ли это мир. Он
|
||||
охватывает только восемь дней стартового мира.
|
||||
|
||||
## Кто его запускает
|
||||
|
||||
На стенде генератором управляют [даги модельного
|
||||
времени](airflow-dags.md#даги-мира). Его можно запустить и напрямую. Команды
|
||||
собраны в [справочнике мира](../architecture/world.md#как-запустить-генератор).
|
||||
|
||||
У генератора два режима. Пакетный отправляет день пачкой. Живой проигрывает
|
||||
модельные сутки в ускоренном темпе.
|
||||
|
||||
## Посмотрите сами
|
||||
|
||||
Подключитесь из DBeaver по [инструкции](../../README.md#подключиться-из-dbeaver)
|
||||
и выполните запрос:
|
||||
|
||||
```sql
|
||||
SELECT EventDate, count() AS events
|
||||
FROM ods.event_v
|
||||
GROUP BY EventDate
|
||||
ORDER BY EventDate;
|
||||
```
|
||||
|
||||
Сравните первые восемь дней с восемью строками в [паспорте
|
||||
мира](../../data/world-inventory.json): числа совпадут. Дни, сыгранные после
|
||||
стартового мира, в паспорте не записаны. Это ожидаемо.
|
||||
|
||||
## Куда дальше
|
||||
|
||||
Глубже генератор разобран в [`generator/`](../../generator/README.md) и в
|
||||
[справочнике его устройства](../architecture/generator/README.md). Тропа
|
||||
путеводителя закончена: дальше идут справочники и [учебные
|
||||
задания](../labs/README.md).
|
||||
Reference in new issue
Block a user