Многоступенчатый фильтр: как очистить огромный массив данных от дубликатов

Многоступенчатый фильтр: как очистить огромный массив данных от дубликатов
22.08.2023
#новости Многоступенчатый фильтр: как очистить огромный массив данных от дубликатов
Многоступенчатый фильтр: как очистить огромный массив данных от дубликатов

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


Разработчик компании IT_One Анна Зверькова рассказывает о нюансах этой процедуры и способах обработки большого объема данных невысокого уровня качества на примере из финансовой отрасли.


Общие сведения


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


Пример абсолютных дубликатов:



Пример дубликатов с неидентичными полями:



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


Обозначим три причины, которые делают дедупликацию насущной необходимостью:

  1. упрощение использования данных, чтобы конечные потребители при виде трех похожих записей не ломали голову, имеют ли они дело с одной и той же сущностью, или с тремя разными;
  2. упрощение анализа данных, в том числе при использовании ML, когда большое количество дубликатов может привести к некорректной работе модели, ее «переобучению»;
  3. повышение эффективности хранения данных, сокращение объема хранимых данных.

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


Однако чаще всего вмешивается ряд факторов, осложняющих дедупликацию. Приведем примеры таких ситуаций на данных из сферы кредитования. Записи о кредитах физических и юридических лиц хранятся как в базах данных кредитных организаций (банков, микрофинансовых организаций и др.), так и в базах данных бюро кредитных историй и регуляторов, контролирующих их деятельность.


Факторы, осложняющие дедупликацию:

  1. Отсутствие уникальных идентификаторов, ошибки в заполнении уникальных идентификаторов. Например, ИНН человека, который должен быть уникален, на самом деле для регулирующего органа не всегда может быть таким уникальным идентификатором: известны случаи, когда по ошибке одному человеку присвоили несколько ИНН. Ошибки при наборе ИНН оператором, вносящим данные, также зачастую делают это поле непригодным для того, чтобы быть уникальным идентификатором, которого достаточно для того, чтобы отделить одного заемщика от другого.
  2. Изменение параметров сущности при сохранении ее тождественности. Например, меняя номер паспорт или фамилию при замужестве, заемщик по факту остается тем же самым человеком.
  3. «Мусорное» заполнение некоторых полей операторами. Например, номер телефона вместо номера паспорта, “test test test” вместо ФИО, “1111111111” вместо номера телефона.
  4. Незаполненные поля.
  5. Опечатки, в том числе одни из самых распространенных, когда соседние символы меняются местами.
  6. Записи в полях перепутаны местами. Например, фамилия в поле «Имя», имя в поле «Фамилия».
  7. Системы-источники предоставляют данные в разных форматах. Например, номера телефонов с +7 или без префикса. 
  8. Неверно используются регистры в строчных данных – «пЕтров» и «иванов», не тождественны «Петрову» и «Иванову».
  9. Замена символов – ‘ч’ и ‘4’, ‘е’ и ‘ё’, английское и русское ‘с’.
  10. Лишние пробелы и спецсимволы.


Работая с дубликатами данных в кредитной информации, можно использовать от одного до трех шагов, описанных ниже, в зависимости от качества, полноты и объема имеющихся данных. Приведем пример на СУБД Apache Hive, однако описанные методы применимы также для других технологий хранения и типов данных.


Подробнее читайте в статье