docs(dm): вычитана дока слоя витрин

- Зачем:
  - горячее ревью развилки #135 нашло два незакрытых решения: объём
    пересборки витрин и судьба менти-витрины после постройки.
- Что:
  - добавлен раздел «Объём пересборки»: одно окно K для всех витрин,
    замерзание daily_traffic за окном названо решением с объяснением.
  - в ТЗ менти добавлен финальный пункт — встроить витрину в dm_transform.
  - поправлены мелочи: greenplum-стенд больше не зовётся предшественником,
    добавлены ссылки на спеку и карту идентичностей.
- Проверка:
  - make config-test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
ddadminandClaude Fable 5 committed 2026-08-25 04:57:17 -04:00
1 parent 70a9aeddb7
commit 99496971e2
1 file changed
+28 -6
+28 -6
View File
@@ -10,8 +10,8 @@
Витрина, меняющая зерно источника — дневной агрегат, сверка по заказам, — Витрина, меняющая зерно источника — дневной агрегат, сверка по заказам, —
материализуется: `dm.<имя>_rep` / `_dist` и публичное `dm.<имя>_v` с явным материализуется: `dm.<имя>_rep` / `_dist` и публичное `dm.<имя>_v` с явным
списком колонок, по общим [конвенциям хранилища](storage.md). Наполняет её списком колонок, по общим [конвенциям хранилища](storage.md). Наполняет её
`dm_transform` заменой дневных партиций дышащего окна K — той же механикой, `dm_transform` заменой дневных партиций — той же механикой, что у сущностей
что у сущностей DDS ([конвейер](etl.md)). Витрина, сохраняющая зерно DDS ([конвейер](etl.md)); объём пересборки — ниже. Витрина, сохраняющая зерно
источника — переименование, обогащение строки, — остаётся обычным источника — переименование, обогащение строки, — остаётся обычным
представлением: копию событий ради других имён колонок не держит ни один представлением: копию событий ради других имён колонок не держит ни один
боевой склад. боевой склад.
@@ -33,18 +33,38 @@
- `purchase_vs_orders` — сверка A+C с классами расхождений; зерно — заказ, - `purchase_vs_orders` — сверка A+C с классами расхождений; зерно — заказ,
шардирование сохраняет ко-локацию заказов по `cityHash64(order_id)`; шардирование сохраняет ко-локацию заказов по `cityHash64(order_id)`;
- `daily_traffic` — пара «посетители» / «известные пользователи», локальное - `daily_traffic` — пара «посетители» / «известные пользователи», локальное
обогащение картой идентичностей; обогащение [картой идентичностей](dds/identity.md);
- `dq_summary` — сводка проверок качества (ниже). - `dq_summary` — сводка проверок качества (ниже).
Остальные витрины спеки — учебные задания: менти строит их сам по ТЗ с Остальные витрины спеки — учебные задания: менти строит их сам по ТЗ с
образцом. Разминка — представление `events_enriched_v` (зерно события), образцом. Разминка — представление `events_enriched_v` (зерно события),
затем агрегаты `top_pages_daily`, `session_overview` и `dq_errors_daily`, затем агрегаты `top_pages_daily`, `session_overview` и `dq_errors_daily`,
последней — самая содержательная `utm_effectiveness` с уроком `declared_*`. последней — самая содержательная `utm_effectiveness` с уроком `declared_*`.
Построенная витрина встаёт в конвейер руками менти: финальный пункт
каждого ТЗ — добавить задачу своей витрины в `dm_transform`. До этого
конвейер о ней не знает и остаётся зелёным, после — витрина пересобирается
наравне со стендовыми.
Дашборд этапа 8 стоит только на витринах стенда: приёмка этапа не зависит Дашборд этапа 8 стоит только на витринах стенда: приёмка этапа не зависит
от выполненных домашек. Расширение дашборда визуализациями по своим от выполненных домашек. Расширение дашборда визуализациями по своим
витринам — отдельная домашка после этапа 8. витринам — отдельная домашка после этапа 8.
## Объём пересборки
Все материализованные витрины пересобираются одним окном — дышащим окном K
от позиции мира, тем же, что у заказов. Витринам от заказов окна хватает по
построению: день за окном закрыт, его классы и суммы не меняются. Витринам
от событий и сессий окно даже избыточно — их дни замерзают сразу.
Одно следствие названо явно. `daily_traffic` обогащается картой
идентичностей, а карта пересчитывается целиком, и склейка ретроспективна:
покупка сегодня делает куку «известной» во всех прошлых днях карты. Дни за
окном K в витрину эту новость уже не получат — они хранят число известных
на момент закрытия окна. Это решение, а не недосмотр: живое окно показывает
текущую склейку, замороженные дни — какой она была тогда, и расхождение
между витриной и картой само по себе урок ретроспективности (историю
склейки стенд сознательно не хранит — issue #145).
## `dm.dq_summary` ## `dm.dq_summary`
Зерно — «день данных × проверка»: строка отвечает, каково качество дня Зерно — «день данных × проверка»: строка отвечает, каково качество дня
@@ -78,14 +98,15 @@ Airflow. Партиция — день данных; прогон звена DQ
константы не прибиваются. В `dq_summary` даг не пишет: он инструмент лабы, константы не прибиваются. В `dq_summary` даг не пишет: он инструмент лабы,
а не история качества конвейера. а не история качества конвейера.
Приём проверен на greenplum-стенде предшественника: валидационный даг с Приём проверен на соседнем учебном стенде Airflow + Greenplum: валидационный даг с
группами проверок по слоям давал менти обратную связь по каждому шагу группами проверок по слоям давал менти обратную связь по каждому шагу
домашки, не трогая рабочий конвейер. домашки, не трогая рабочий конвейер.
## Остаётся нарезке ## Остаётся нарезке
- Имена задач `dm_transform`, звена DQ и дага самопроверки. - Имена задач `dm_transform`, звена DQ и дага самопроверки.
- Ключи шардирования материализованных витрин — вместе с их DDL; правило - Ключи шардирования остальных материализованных витрин — вместе с их
DDL; правило
партиции-донора — в [доке хранилища](storage.md). партиции-донора — в [доке хранилища](storage.md).
- Тексты учебных заданий и точный список проверок обоих контуров. - Тексты учебных заданий и точный список проверок обоих контуров.
- Механика сверки A+C в SQL — рамка в спеке, разделы 4 и 7. - Механика сверки A+C в SQL — рамка в спеке, разделы 4 и 7.
@@ -112,7 +133,8 @@ Airflow. Партиция — день данных; прогон звена DQ
## Связанные решения ## Связанные решения
- Мастер-спека, разделы 4 и 7, — состав колонок витрин и классы сверки. - [Мастер-спека](../specs/2026-07-30-stand-v2-realism.md), разделы 4 и 7, —
состав колонок витрин и классы сверки.
- [Дневной конвейер](etl.md) — запуск `dm_transform`, объём прогона, - [Дневной конвейер](etl.md) — запуск `dm_transform`, объём прогона,
замена партиций на кластере. замена партиций на кластере.
- [Дока хранилища](storage.md) — имена объектов, граница доступа через - [Дока хранилища](storage.md) — имена объектов, граница доступа через