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:
1 parent
70a9aeddb7
commit
99496971e2
1 file changed
+28
-6
+28
-6
@@ -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) — имена объектов, граница доступа через
|
||||||
|
|||||||
Reference in new issue
Block a user