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. - три семейства проверок покрашены искусственными расхождениями и восстановлены повторным полным прогоном.
This commit is contained in:
1 parent
4e60aafc31
commit
26b2e5fea1
17 files changed
+753
-38
No files matched your search
@@ -0,0 +1,45 @@
|
||||
-- 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
|
||||
Reference in new issue
Block a user