Files
clickstream-data-platform/sql/dm/daily_traffic_rebuild.sql
T
ddadmin da0477f0f1 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; меры сверены с прямыми агрегатами.
2026-08-26 13:55:26 -04:00

28 lines
1.2 KiB
SQL

-- 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;