Files
clickstream-data-platform/sql/dq/sessions_vs_reference.sql
T
ddadmin 26b2e5fea1 feat(dq): добавлен контроль качества конвейера
- Зачем:
  - конвейеру нужна публикуемая сводка текущего качества с красным завершением при нарушении договоров.
- Что:
  - добавлены DDL, публичное представление и пять сверок на естественном деловом зерне.
  - даг dq_check встроен после DM и публикует полные дневные партиции до именованных утверждений.
  - параллелизм DDS, DM и DQ приведён к измеренному лимиту памяти планировщика.
- Проверка:
  - make lint; make config-test; make rebuild-storage.
  - make smoke; make check-clickhouse; make check-services.
  - три семейства проверок покрашены искусственными расхождениями и восстановлены повторным полным прогоном.
2026-08-27 07:55:28 -04:00

46 lines
1.6 KiB
SQL

-- DQ: эталонная сессия Метрики против сессии, нарезанной слоем DDS.
--
-- Строка результата — одна кука одного завершённого дня. Сравнение по ключу
-- не даёт лишней сессии одной куки скрыть потерянную сессию другой.
WITH
(SELECT min(EventDate) FROM ods.event_v) AS first_source_day,
first_source_day + ({position:UInt16} - 1) AS last_lived_day,
reference AS
(
SELECT
EventDate AS data_date,
ClientID AS client_id,
uniqExact(VisitID) AS sessions
FROM ods.event_v
WHERE EventDate <= last_lived_day
GROUP BY
data_date,
client_id
),
actual AS
(
SELECT
session_date AS data_date,
client_id,
count() AS sessions
FROM dds.session_v
WHERE session_date <= last_lived_day
GROUP BY
data_date,
client_id
)
SELECT
coalesce(reference.data_date, actual.data_date) AS data_date,
toString(coalesce(reference.client_id, actual.client_id)) AS business_key,
isNotNull(reference.client_id) AS reference_present,
isNotNull(actual.client_id) AS actual_present,
toString(reference.sessions) AS reference_value,
toString(actual.sessions) AS actual_value,
NOT isNotDistinctFrom(reference.sessions, actual.sessions) AS failed
FROM reference
GLOBAL FULL OUTER JOIN actual USING (data_date, client_id)
ORDER BY
data_date,
business_key
SETTINGS join_use_nulls = 1