docs(dm): вычитан слой витрин вторым горячим ревью
- Зачем:
- после переписывания ритма пересборки в тексте остались швы прежних
формулировок и один разрыв с докой конвейера.
- Что:
- довод против дневных партиций daily_traffic заменён верным: партиция —
единица замены, а витрина заменяется только целиком (число строк тут
ни при чём, иначе довод бил бы и по dq_summary).
- в etl.md к механике REPLACE PARTITION добавлена вторая идемпотентность
конвейера — полная перезапись в ReplacingMergeTree.
- правило ритмов говорит про день, а не партицию; поправлены переносы
строк и обороты.
- Проверка:
- make config-test.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
92d834761c
commit
2f9a26eb0e
2 files changed
+12
-11
No files matched your search
+9
-10
@@ -18,7 +18,7 @@
|
||||
Правило выбрано учебной целью, а не ценой запроса. На объёмах стенда
|
||||
представлениями обошлось бы всё: условия сквозь цепочку представлений
|
||||
проходят ([исследование](../research/2026-08-22-view-predicate-pushdown.md)).
|
||||
Но агрегат, пересобираемый партициями, — производственный паттерн, ради
|
||||
Но пересборка агрегатов конвейером — производственный паттерн, ради
|
||||
которого стенд и строится, а пара «таблица рядом с представлением»
|
||||
показывает: форма — решение по роли витрины, у одного слоя законны обе.
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
## Ритм пересборки
|
||||
|
||||
Партиция витрины пересобирается, пока может измениться её источник, —
|
||||
День витрины пересобирается, пока может измениться его источник, —
|
||||
поэтому ритмов три, по числу источников:
|
||||
|
||||
- **от событий и сессий** — день замерзает сразу; пересборка догоняет
|
||||
@@ -63,8 +63,8 @@
|
||||
|
||||
Поэтому `daily_traffic` наследует у своего источника и ритм, и механику:
|
||||
полный пересчёт всех дней каждый прогон в `ReplacingMergeTree(_load_ts)`,
|
||||
как у самой карты. Дневные партиции ей не положены — строка в дне одна, и
|
||||
партиция на строку плодила бы микрокуски на ровном месте. Пересчёт дешёв:
|
||||
как у самой карты. Дневных партиций у неё нет: партиция — единица замены,
|
||||
а эта витрина заменяется только целиком. Пересчёт дешёв:
|
||||
витрина читает сессии и карту локальным соединением по ключу ко-локации.
|
||||
Пересчитывать точечно только затронутые дни не из чего: для этого надо
|
||||
знать, какие связки новые, а полный пересчёт карты этот след затирает —
|
||||
@@ -103,16 +103,15 @@ Airflow. Партиция — день данных; прогон звена DQ
|
||||
константы не прибиваются. В `dq_summary` даг не пишет: он инструмент лабы,
|
||||
а не история качества конвейера.
|
||||
|
||||
Приём проверен на соседнем учебном стенде Airflow + Greenplum: валидационный даг с
|
||||
группами проверок по слоям давал менти обратную связь по каждому шагу
|
||||
домашки, не трогая рабочий конвейер.
|
||||
Приём проверен на соседнем учебном стенде Airflow + Greenplum:
|
||||
валидационный даг с группами проверок по слоям давал менти обратную связь
|
||||
по каждому шагу домашки, не трогая рабочий конвейер.
|
||||
|
||||
## Остаётся нарезке
|
||||
|
||||
- Имена задач `dm_transform`, звена DQ и дага самопроверки.
|
||||
- Ключи шардирования остальных материализованных витрин — вместе с их
|
||||
DDL; правило
|
||||
партиции-донора — в [доке хранилища](storage.md).
|
||||
DDL; правило партиции-донора — в [доке хранилища](storage.md).
|
||||
- Тексты учебных заданий и точный список проверок обоих контуров.
|
||||
- Механика сверки A+C в SQL — рамка в спеке, разделы 4 и 7.
|
||||
|
||||
@@ -138,7 +137,7 @@ Airflow. Партиция — день данных; прогон звена DQ
|
||||
и протаскивает обратно «знание на дату», отвергнутое развилкой карты
|
||||
(#133).
|
||||
- **Инкрементальный пересчёт затронутых дней по `first_matched_at`.**
|
||||
Производственный ход, но на объёмах стенда он экономит неизмеримое, а
|
||||
Производственный ход, но на объёмах стенда его экономия неизмерима, а
|
||||
след новых связок требует вернуть колонку, выкинутую в #133. Стал лабой
|
||||
повышенной сложности — issue #149.
|
||||
- **Superset поверх DDS без слоя DM.** Терялся бы урок «витрина — контракт
|
||||
|
||||
@@ -63,7 +63,9 @@
|
||||
вставка через Distributed раскладывает строки по шардам, — затем
|
||||
`REPLACE PARTITION` на кластере атомарно подменяет кусок каждого шарда. Эта
|
||||
механика — часть самих трансформаций и строится этапом 4: без неё дневной
|
||||
прогон не повторяем.
|
||||
прогон не повторяем. Сущности, пересчитываемые целиком, идемпотентны и без
|
||||
замены: полная перезапись в `ReplacingMergeTree` — так живут карта
|
||||
идентичностей и витрина `daily_traffic` ([слой DM](dm.md)).
|
||||
|
||||
## Не входит
|
||||
|
||||
|
||||
Reference in new issue
Block a user