Метрики качества данных: измеряйте дефекты, не додумывая факты

Метрики качества данных количественно описывают конкретные дефекты набора данных по заданным правилам и совокупностям наблюдений. Указывайте число дефектов, знаменатель, исключения и затронутые исходные строки, чтобы другой проверяющий мог воспроизвести каждый показатель. Упражнение из шести строк ниже измеряет полноту обязательных полей, допустимость значений, лишние повторения ключей и неразрешённые конфликты статусов, сохраняя неизвестные факты видимыми.

Полнота показывает, присутствуют ли обязательные наблюдения; допустимость значений — удовлетворяют ли предоставленные значения заданному правилу. Ни то ни другое не устанавливает истинность значения. Даже заполненное поле с допустимым статусом может расходиться с действительностью; для оценки этого расхождения нужен независимый источник подтверждения.

Статус переноса таблицы метрик качества: задокументировано. Этот вариант записи в таблицу описан в каталоге; Ai Flowi не проверяла его в рабочей среде. Показатели ниже рассчитаны по вымышленным записям, без внешнего эталона.

Скопируйте исходный набор из шести строк

В этом упражнении enquiry_id и status обязательны в каждой исходной строке. Допустимые статусы — строго new, contacted и closed. Идентификаторы являются текстом с учётом регистра, а контракт предполагает одну запись на идентификатор обращения. Сумма необязательна и выражена в сенах; пустая сумма неизвестна, а предоставленный ноль остаётся нулём.

source_row,enquiry_id,status,amount_sen
R1,Q01,new,12500
R2,Q02,contacted,
R3,Q03,waiting,0
R4,Q04,,8000
R5,Q02,closed,5000
R6,,new,9000

source_row — идентификатор наблюдения, а не идентификатор деловой записи. Поэтому R2 и R5 можно отслеживать отдельно, хотя они относятся к одному Q02. Ни время события, ни версия, подтверждённая ответственным источником не предоставлены, поэтому набор не позволяет определить актуальный статус Q02. Сохраните оба наблюдения и конфликт, не выбирая строку, показанную позже.

Зафиксируйте этот источник как SYN-QUALITY-A и запишите версию правил до расчёта. Не очищайте и не удаляйте строки заранее: это изменило бы совокупность, дефекты которой должна описывать таблица метрик. Отдельный набор принятых данных можно подготовить позже, с собственным происхождением и решениями.

Скопируйте таблицу метрик качества

metric,numerator,denominator,rate_percent,exclusions,affected_source_rows
Required-cell completeness,10,12,83.33,none,R4 and R6 missing cells
Status validity among populated statuses,4,5,80,R4 empty status,R3 invalid status
Excess duplicate-key rows,1,5,20,R6 missing key,R2 and R5 form duplicate group
Conflicted key groups,1,4,25,R6 missing key,Q02 represented by R2 and R5

Все четыре значения — расчёты по искусственным данным, при необходимости округлённые для отображения. Рядом с округлённым процентом сохраняйте целочисленные количества. Процент полноты и доля допустимых статусов описывают прошедшие проверку наблюдения; проценты дубликатов и конфликтов описывают дефекты. Не снабжайте их общей пометкой «чем выше, тем лучше».

Таблица определений поддерживает горизонтальную прокрутку и клавиатурный фокус, чтобы столбцы расчётов и неопределённостей оставались доступными.

Знаменатели и подтверждения из источника для SYN-QUALITY-A
ПоказательРасчётЧто остаётся неизвестным
Полнота обязательных ячеекШесть строк по два обязательных поля дают 12 ячеек. В R4 отсутствует status, а в R6 — enquiry_id, поэтому заполнены 10 ячеек: 10 / 12.Правильны ли десять предоставленных значений.
Допустимость значенийЗаполнены пять статусов. Четыре входят в допустимый словарь; waiting в R3 не входит: 4 / 5.Отражают ли эти четыре допустимых статуса фактические этапы обращений.
Лишние повторения ключейУ пяти строк есть ключи; разных ключей четыре. Есть одно лишнее вхождение: (5 − 4) / 5.Какое наблюдение Q02 должно представлять обращение.
Группы с неразрешёнными конфликтамиОдин из четырёх разных непустых ключей имеет несовместимые предоставленные статусы: 1 / 4.Подтверждённый статус Q02.

Различайте полноту ячеек и полноту строк

Основной показатель полноты равен 10 / 12, или примерно 83.33%, поскольку его единица — обязательная ячейка. Если же вопрос состоит в том, сколько строк содержит оба обязательных поля, подходят R1, R2, R3 и R5. Полнота строк равна 4 / 6, или примерно 66.67%. R3 считается заполненной, хотя waiting недопустим.

Не смешивайте эти определения. Назвав 83.33% «полными записями», вы измените смысл знаменателя. Пропуск статуса R4 должен оставаться в отчёте, даже если проверка допустимости значений исключает пустые ячейки. Высокая доля допустимых статусов может сочетаться с большим количеством пропусков.

Необязательные ячейки суммы не участвуют в расчёте полноты обязательных полей. Пустая сумма R2 должна оставаться неизвестной в любой сводке сумм, а ноль R3 — предоставленной суммой. Замена пустоты R2 нулём улучшила бы вид записи, не добавив подтверждающих данных. Значение пустого поля и нуля следует согласовать до принятия правила отчётности с помощью шаблона словаря данных.

Определите, что учитывает доля дубликатов

Эта таблица учитывает лишние вхождения сверх одного на непустой ключ. Q02 встречается дважды и даёт одну лишнюю строку. Другой полезный показатель учитывает все строки с повторяющимися ключами: R2 и R5 дают 2 / 5, или 40%. Оба расчёта воспроизводимы, но отвечают на разные вопросы. В каждом отчёте называйте выбранный показатель.

Отсутствующие идентификаторы исключаются из метрик по ключам, поскольку не установлено, к каким обращениям относятся записи. R6 по-прежнему участвует в полноте и списке проблем с отсутствующими ключами. Объединение всех пустых идентификаторов в одно дублирующееся обращение необоснованно приписало бы им одно общее обращение, хотя источник этого не подтверждает.

Расчёт конфликтов группирует наблюдения по непустому ключу и сравнивает предоставленные статусы. У Q02 указаны contacted и closed, поэтому одна группа требует проверки. Пустая сумма R2 и заполненная сумма R5 сами по себе не доказывают конфликт сумм: отсутствие суммы не означает, что указано другое значение. Без подтверждения ответственного источника или времени события изменившийся этап остаётся неразрешённым конфликтом по контракту этого снимка, предполагающему одну запись.

Проверяйте дефекты до изменения записей

Передайте ответственному за источник вопросы о допустимости статуса R3, отсутствующем статусе R4, отсутствующем ключе R6 и конфликте Q02. Запишите каждый вопрос и подтверждающие данные, необходимые для его решения. Проверяющий может подтвердить, что waiting следует разрешить как этап, но это изменяет версию правил; это не доказывает ошибочность исходного расчёта.

Сравнивайте отчётные периоды только при совпадении обязательных полей, охвата совокупности, правил исключения и определений дубликатов. Если новая выгрузка не включает отклонённые строки, снижение доли дефектов может отражать изменение охвата. Сохраняйте количество исходных записей и ссылки на проблемы рядом с показателем, чтобы это различие можно было исследовать.

Не усредняйте эти четыре процента в прогнозный показатель качества. Их единицы, направления и исключения различаются; несколько дефектов могут затрагивать одно наблюдение. Обоснованные исправления рассматривает очистка данных, а проверки преобразований — тестирование ETL. Таблица метрик измеряет предоставленный снимок до этих отдельных действий.

Перенесите принятые строки метрик в электронную таблицу

Пример конфигурации, а не отчёт о проведённом тестировании

Общий интерфейс записи описан в разделе каталога Update Range; авторизуйте собственную учётную запись для таблицы метрик по инструкции доступа Google.

Сформируйте values по CSV метрик из шести столбцов; для заголовка и четырёх рассчитанных строк метрик используйте диапазон range_name Quality!A1:F5. Копируйте исключения и идентификаторы затронутых исходных строк вместе с показателями. Столбец D содержит числа, уже выраженные в процентах: 83.33 означает примерно 83.33%, а 80 — 80%. Формат процентов, рассчитанный на дроби, исказил бы эти значения. Перенос создаёт снимок приведённых расчётов, а не формулу, пересчитывающуюся при изменении исходных строк.

Изучите JSON result и сверьте каждую строку таблицы с SYN-QUALITY-A: полнота использует двенадцать обязательных ячеек, доля допустимых статусов — пять заполненных статусов, лишние дубликаты — пять строк с ключами, конфликты — четыре группы ключей. Не заменяйте эти знаменатели одним общим количеством исходных строк. Проверьте, что R4 остаётся указанной среди исключений проверки допустимости значений, хотя также даёт пропущенную обязательную ячейку. Объединение этой таблицы с другими подтверждающими данными отчётов рассматривает автоматизация отчётности.

Каковы проверки ошибок и для каких случаев показатели качества данных не подходят?

Проверьте доступность всех шести идентификаторов исходных строк и возможность повторно получить количества, указанные в CSV. Проверьте пустой набор: каждый показатель с нулевым знаменателем должен остаться неопределённым. Удалите статус R3: полнота обязательных ячеек станет 9 / 12, а доля допустимых статусов — 4 / 4; выросшая доля допустимых статусов не должна скрывать новый пропуск.

Измените статус R5 на contacted: лишних дубликатов останется один, а число конфликтов статусов станет нулевым. Это показывает, почему устранению дубликатов и измерению конфликтов нужны разные правила. Упражнение не обеспечивает аудит точности, гарантию актуальности, эталон или автоматическое разрешение конфликтов. Не используйте его показатели как доказательство достаточной надёжности данных для решения с существенными последствиями.

Автор: Ai Flowi · Опубликовано .