Какую проверку лучше добавить как защитный инвариант, чтобы защититься от повторной загрузки одного и того же дня и появления дублей в витрине?
AПроверять, что
avg(metric) за день выглядит похоже на прошлую неделю и не сильно отклоняется от привычного диапазона значений по выборке.BПроверять уникальность первичного ключа в каждой партиции условием
count_distinct(primary_key) = count(*) и требовать идемпотентности загрузки.CПроверять, что
max(metric) не превышает заранее заданный порог и в данных не появляется аномально больших чисел за обработанный день.DПроверять визуально, что на дашборде нет резких углов на графике
metric и линия выглядит непрерывной без подозрительных скачков вверх.Правильный ответ. Инвариант на уникальность первичного ключа в партиции вместе с идемпотентностью загрузки предотвращает размножение фактов при повторных запусках.
Разбор
Если загрузка не идемпотентна, повторный запуск может добавлять те же строки заново. Условие count_distinct(primary_key) = count(*) ловит нарушение уникальности сразу после загрузки, до того как ошибка попадёт в отчёты. Это надёжнее визуальных проверок и проверок диапазона, потому что прямо описывает требование к данным. Такие инварианты помогают строить устойчивые пайплайны и доверять цифрам в витрине.
Проверь себя · 1/2разбор после ответа
Каждый день в отчёте последние 2 часа выглядят как ноль событий, но на следующий день эти часы «дозаполняются». Какое объяснение наиболее вероятно?
Ещё вопросы по теме «Качество данных и инварианты»
- В ежедневном дашборде `DAU` и количество событий резко упали начиная с 02:00 и остаются низкими до конца дня. Что проверить первым, чтобы быстро понять, это потеря данных или реальный бизнес-эффект?
- Какой инвариант наиболее уместно добавить в ежедневный отчёт по воронке e-commerce, чтобы быстро ловить ошибки данных?
- Выручка по событиям в продуктовой витрине на 5 процентов выше, чем в платёжной системе за тот же день. Что логичнее всего проверить первым в рамках сверки данных?
- Вчера число событий `purchase` выросло в 2 раза, но число уникальных `order_id` почти не изменилось. Какой источник проблемы наиболее вероятен?
- Метрики за понедельник резко просели, а за вторник резко выросли, при этом сумма за два дня почти не изменилась. Какая проверка лучше всего указывает на сдвиг времени?
- Все вопросы по «Качество данных и инварианты» →