Меню

Список покрытия данных по странам: три состояния и минимум полей

Как посчитать покрытие данных по странам так, чтобы результат можно было проверить: три состояния, выбор знаменателя и минимальный набор полей.

Опубликовано

  • покрытие данных
  • список полей
  • аудит

Список покрытия данных по странам нужен не для красивой цифры в отчёте, а для ответа на конкретный вопрос: по каким странам и по каким полям у нас есть значения, а где их нет. Как только покрытие превращается в одну строку с процентом, из неё исчезает всё полезное: непонятно, чего именно не хватает, кто это должен заполнить и было ли значение пропущено случайно или его в этой стране не бывает. Поэтому список стоит строить так, чтобы каждая строка отвечала за одну пару «страна и поле».

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

Что именно должно попадать в список покрытия?

Минимальная единица учёта — пара из страны и поля, а не страна и не поле по отдельности. Причина простая: и то и другое по отдельности скрывает проблему. Строка «страна заполнена» ничего не говорит о том, какие поля в ней есть. Столбец «поле заполнено» ничего не говорит о том, сколько стран осталось за рамками.

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

Ещё одно требование к форме записи: строка должна называть не только статус, но и основание. Если поле помечено как неприменимое, рядом нужно короткое пояснение, почему. Без пояснения через месяц никто не сможет отличить осознанное решение от забытой записи.

Неприменимое поле и пропуск — это не одно и то же

Самая частая ошибка — считать, что поле либо заполнено, либо не заполнено. Из-за этого в один разряд попадают два совершенно разных случая, и оба перестают быть видны.

Правильных состояний три:

  1. Поле применимо и заполнено. Обычный случай, значения есть.
  2. Поле к этой стране не применяется. У описываемой системы такого уровня или такого идентификатора нет вовсе: адрес устроен иначе, а привычное поле просто не существует.
  3. Поле должно быть, но значения нет. Это настоящий пропуск: правило требует значение, а его не собрали.

Разница между вторым и третьим состоянием определяет, что вы будете делать дальше. Во втором случае работы нет — так и должно быть. В третьем случае нужен поиск источника или явное решение о том, что поле для этой страны необязательно.

Хуже всего, когда второе состояние записывают как третье. Тогда пропуски исчезают в общей массе «неприменимо», а показатель покрытия выглядит благополучно.

Состояние Что означает Что делать
Применимо и заполнено значение есть и ожидается ничего, поддерживать актуальность
Не применяется поля в этой системе нет зафиксировать основание для аудита
Пропущено значение ожидается, но не собрано найти источник или пересмотреть правило

Какой знаменатель выбирать при подсчёте покрытия?

Один и тот же набор данных даёт разные числа в зависимости от того, что вы взяли за знаменатель. Пока знаменатель не назван, любое число покрытия бессмысленно.

Распространённых вариантов три:

  • по числу стран: сколько стран имеют все обязательные поля;
  • по парам «страна и поле»: сколько ячеек заполнено из общего числа ячеек;
  • по значимости: сколько ячеек заполнено, если взвесить поля по их важности для продукта.

Первый вариант удобен в разговоре с руководителем, но груб: он считает страну полностью готовой или полностью проблемной. Второй вариант точнее и лучше подходит для работы, но его число ниже, и это нормально. Третий вариант ближе всего к реальному ущербу, но требует заранее договориться о весах, иначе спор о числах превратится в спор о весах.

Практичное решение — показывать оба числа рядом и всегда подписывать, какой знаменатель использован.

Что считать минимальным набором полей

Если складывать в покрытие все поля сразу, отдельные редкости испортят общую картину: почти каждая страна окажется где-то неполной, и показатель перестанет различать страны между собой.

Спасает разделение на два уровня. Первый — минимальный набор: то, что ожидается практически везде и без чего страна считается неописанной. Второй — дополнительные поля, которые есть не у всех и добавляются осознанно.

Уровень Состав Как учитывается
Минимальный набор код, название, денежная единица, часовой пояс обязателен для каждой страны
Дополнительные поля уровни адреса, идентификаторы, особые отметки считается отдельно, не влияет на минимальный уровень

Такое разделение даёт два числа вместо одного, и каждое из них полезно. Первое отвечает на вопрос, все ли страны вообще описаны. Второе показывает, насколько глубоко описана каждая страна. Сваливать их в одно число — значит потерять и то и другое.

Отдельная трудность того же уровня — страны, где официально используется больше одного языка. Тогда запись «одна страна — одна строка» перестаёт помещаться в модель, потому что в одной ячейке оказывается несколько значений.

Решение нужно принять явно, до начала сбора. Возможны два подхода: держать поле многозначным и хранить список значений, либо оставить одну строку на страну и не заводить поле, которое по своей природе множественное.

У каждого подхода есть цена. Многозначное поле усложняет проверки и сравнение стран между собой. Одно значение заставляет выбирать основное и терять остальные. Что бы вы ни выбрали, это решение должно быть записано рядом со списком, иначе каждая новая страна будет трактовать правило по-своему.

Как связать покрытие с каталогом страны и региона

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

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

Как сделать покрытие проверяемым

Статичная таблица стареет с каждым обновлением. Гораздо полезнее список, по которому можно задать вопрос и получить ответ.

Что стоит сделать в первую очередь:

  1. Храните список в машиночитаемом виде рядом с данными, а не в отдельном документе, который живёт своей жизнью.
  2. Заведите признак, по которому можно отобрать строки с пропусками, отдельно от строк с неприменимыми полями.
  3. Добавьте дату последнего пересмотра для каждой строки, чтобы отличать свежие записи от давно не проверявшихся.
  4. Считайте показатели на лету, а не храните готовые числа: числа устаревают быстрее, чем исходные записи.

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

Что важно разработчику

Первое: не выводите одно сводное число в интерфейс без расшифровки. Пользователь, увидевший высокий показатель, сделает вывод, что данных достаточно, хотя пропуски могут быть сосредоточены именно там, где он собирается работать.

Второе: различайте отсутствие значения и отсутствие применимости на уровне модели данных, а не только в отчёте. Если в структуре записи нет места для признака «не применяется», то рано или поздно пустое значение начнёт означать то одно, то другое.

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

Что делать дальше

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

После этого переходите к теме масштаба: как удержать такое описание, когда стран станет в разы больше, и как отделить общие правила от частных исключений. Об этом — материал про масштабирование тестовых данных по странам. А если непонятно, откуда вообще берутся расхождения между описанием и реальностью, стоит заглянуть в статью про актуальность данных о странах.

Составление списка удобно начинать со сверки с каталогом стран и регионов: он даёт общую картину групп, по которой видно, каких частей мира в вашем описании не хватает.

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

Читать дальше

Статьи: Форматы адресов и данных личности по странам