feat(dm): добавлены витрины выручки и трафика
Зачем: - Показать два ритма пересборки агрегатов на готовых витринах 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; меры сверены с прямыми агрегатами.
This commit is contained in:
1 parent
c9bcacd63b
commit
da0477f0f1
12 files changed
+436
-25
No files matched your search
@@ -0,0 +1,27 @@
|
||||
-- DM: полный пересчет дневного трафика.
|
||||
--
|
||||
-- Публичные _v скрывают Distributed-таблицы от локальной подстановки:
|
||||
-- EXPLAIN на ClickHouse 26.3 показал чтение обоих шардов на инициаторе.
|
||||
-- Поэтому GLOBAL назван явно, а физические таблицы не подставлены. LEFT JOIN
|
||||
-- сохраняет анонимные сессии.
|
||||
INSERT INTO dm.daily_traffic_dist
|
||||
(
|
||||
report_date,
|
||||
visitors,
|
||||
known_users,
|
||||
_load_id,
|
||||
_load_ts
|
||||
)
|
||||
SELECT
|
||||
sessions.session_date,
|
||||
uniqExact(sessions.client_id),
|
||||
uniqExactIf(identities.user_id, identities.user_id != 0),
|
||||
{load_id:String},
|
||||
now64(3, 'UTC')
|
||||
FROM dds.session_v AS sessions
|
||||
GLOBAL LEFT JOIN dds.identity_map_v AS identities USING (client_id)
|
||||
GROUP BY sessions.session_date
|
||||
-- Ноль оставляет итоговую группировку на инициаторе: иначе каждый шард записал
|
||||
-- бы свою строку дня, а FINAL через границу шардов их не объединяет.
|
||||
SETTINGS distributed_foreground_insert = 1,
|
||||
parallel_distributed_insert_select = 0;
|
||||
Reference in new issue
Block a user