Контракт события: представление dds.event_v #150
Notifications
Due Date
No due date set.
Blocks
#151 Модель заказа в DDS: dds.order и пересборка окна
ddmitry/clickstream-data-platform
#152 Сессии: dds.session и нарезка визитов
ddmitry/clickstream-data-platform
#153 Карта идентичностей: dds.identity_map и полный пересчёт
ddmitry/clickstream-data-platform
Reference: ddmitry/clickstream-data-platform#150
Reference in new issue
Block a user
Part of #6.
Цель
dds.event_v— публичный договор события: обычное представление надods.event_vвторым уровнем, явный список колонок, язык бизнес-модели.Учебный результат (event.md): первый на стенде пример правила «слой —
контракт, а не обязательно копия данных».
Потребительские запросы читают
_v, но права доступа намеренно шире договора:bi_readerтехнически читает ODS, DDS и DM целиком. Узкая граница поверхDistributedпотребовала бы отдельной межсерверной механики без нового урока;решение и проверка ClickHouse 26.3 записаны в ADR 0007 и исследовании задачи.
Что войдёт
sql/ddl/очередным номером: представление ON CLUSTER (базаddsесть в
00-databases.sql), форма — по конвенции storage.md «Именаобъектов».
WatchID→event_id;UTCEventTime→event_timeвпоясе счётчика, второй метки времени нет;
event_date— переименованиеEventDate, не пересчёт (оговорка исследования #128: пересчёт ослепилбы индекс);
client_idиclient_timezoneостаются.device_category— коды 1–4 вdesktop/mobile/tablet/tv. Другие коды остаются кодами.VisitID,Sign, сыройecommerce,_load_id/_load_ts.Всё остальное отдаётся, включая
ip_address, обаregion_*_idиразобранные массивы
purchase_*/product_*.bi_readerполучаетSELECT ON ods.*,dds.*иdm.*.Публичную поверхность задают
_v, документация и ревью, а не отдельныегранты. ADR 0007 и storage.md уточняются тем же PR.
Границы
добавляется.
Кому что
Список колонок и DDL — Opus: контракт и есть урок. Codex — контрольные
прогоны по брифу.
Сначала прочитать
выгрузки;
контракта;
право
bi_readerшире публичной поверхности;Проверка
make config-test(правка access.xml); на стендеmake smoke,make check-clickhouseзелёные.event_idсовпадает сWatchID, счёт строк равенods.event_v;показания
event_time— местные: смещены от показанийUTCEventTimeна пояс счётчика (сравнение через
toString).DeviceCategoryдаёт свою строкуdevice_category.biчитаетdds.event_vиods.event_v, но получает отказ причтении STG;
SHOW GRANTSсодержитSELECTна ODS, DDS и DM.