feat(dm): добавлены витрины выручки и трафика #169

Merged
ddmitry merged 2 commits from 154-dm-marts into main 2026-08-26 22:23:40 +03:00
Owner

Что

  • Создана база dm, физические таблицы и публичные представления revenue_daily и daily_traffic.
  • Добавлен ручной DAG dm_transform: выручка заменяет партиции изменяемого окна, трафик пишет новую версию полной истории.
  • Область пересборки выручки выводится из последнего слепка ODS и дополняется пропущенной историей DDS.
  • Обновлены dm.md, карта DDL, мастер-спека и список читателей события.

Решение по соединению

EXPLAIN PLAN и system.query_log подтвердили, что публичные _v скрывают ко-локацию от distributed_product_mode = 'local': оба шарда отдают строки инициатору. По решению владельца используется явный GLOBAL LEFT JOIN через публичные договоры; физические таблицы не подставляются. Отрицательный результат опыта записан в документации.

Проверка

  • make lint
  • make config-test
  • make smoke — 21/21
  • make check-clickhouse — 10/10
  • make check-services — 7/7
  • Чистая сборка: make rebuild-storage, затем dds_transform и dm_transform.
  • Прямые сверки мер: revenue_mismatches=0, traffic_mismatches=0.
  • Повторный dm_transform: в публичных _v нет дублей; физическая история трафика сохраняет обе версии.
  • Роль bi читает оба _v, не пишет в DM и не читает STG.

При первом стендовом прогоне три одновременные задачи замены партиций привели к подтвержденному OOM рабочего процесса. Замены сериализованы через max_active_tis_per_dag=1; после перезапуска scheduler все итоговые проверки прошли без OOM и самоперезапусков.

Независимое ревью кода выполнил Opus, линию уместности и литературного русского — Fable. Подтвержденные находки исправлены и повторно проверены.

Closes #154

## Что - Создана база `dm`, физические таблицы и публичные представления `revenue_daily` и `daily_traffic`. - Добавлен ручной DAG `dm_transform`: выручка заменяет партиции изменяемого окна, трафик пишет новую версию полной истории. - Область пересборки выручки выводится из последнего слепка ODS и дополняется пропущенной историей DDS. - Обновлены `dm.md`, карта DDL, мастер-спека и список читателей события. ## Решение по соединению `EXPLAIN PLAN` и `system.query_log` подтвердили, что публичные `_v` скрывают ко-локацию от `distributed_product_mode = 'local'`: оба шарда отдают строки инициатору. По решению владельца используется явный `GLOBAL LEFT JOIN` через публичные договоры; физические таблицы не подставляются. Отрицательный результат опыта записан в документации. ## Проверка - `make lint` - `make config-test` - `make smoke` — 21/21 - `make check-clickhouse` — 10/10 - `make check-services` — 7/7 - Чистая сборка: `make rebuild-storage`, затем `dds_transform` и `dm_transform`. - Прямые сверки мер: `revenue_mismatches=0`, `traffic_mismatches=0`. - Повторный `dm_transform`: в публичных `_v` нет дублей; физическая история трафика сохраняет обе версии. - Роль `bi` читает оба `_v`, не пишет в DM и не читает STG. При первом стендовом прогоне три одновременные задачи замены партиций привели к подтвержденному OOM рабочего процесса. Замены сериализованы через `max_active_tis_per_dag=1`; после перезапуска scheduler все итоговые проверки прошли без OOM и самоперезапусков. Независимое ревью кода выполнил Opus, линию уместности и литературного русского — Fable. Подтвержденные находки исправлены и повторно проверены. Closes #154
ddmitry self-assigned this 2026-08-26 20:56:18 +03:00
ddmitry added 1 commit 2026-08-26 20:56:19 +03:00
Зачем:
- Показать два ритма пересборки агрегатов на готовых витринах DM.

Что:
- Добавлены физические модели и публичные договоры revenue_daily и daily_traffic.
- Добавлен dm_transform с оконной заменой выручки и полным пересчетом трафика.
- Отрицательный опыт локального соединения через публичные _v зафиксирован; выбран явный GLOBAL LEFT JOIN.
- Замены партиций сериализованы после подтвержденного OOM при трех одновременных задачах.
- Обновлены архитектурные документы и мастер-спека.

Проверка:
- make lint, make config-test, make smoke, make check-clickhouse, make check-services.
- Чистая сборка world_recreate, dds_transform и dm_transform; меры сверены с прямыми агрегатами.
ddmitry added 1 commit 2026-08-26 21:56:50 +03:00
- Зачем:
  - Ревью выявило неясные причины ограничений и защитных условий в учебном образце.
- Что:
  - Спекулятивный общий потолок задач заменен адресным лимитом размноженной замены с точным описанием OOM.
  - Объяснены нулевое значение непарного LEFT JOIN и опасность пустого DDS при замене партиций.
  - Добавлена ссылка на разбор области пересборки, а общий штамп про Context7 удален.
- Проверка:
  - make lint, make config-test, make smoke; успешный запуск dm_transform.
ddmitry merged commit fb00bbe4c3 into main 2026-08-26 22:23:40 +03:00
ddmitry deleted branch 154-dm-marts 2026-08-26 22:23:41 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#169