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

Определение критериев совпадения, выбор основной записи и проверяемое объединение связей.

Практическое решение · 3 мин чтения
Как удалять дубли записей без потери связанных данных — tarasovcode
Инженерия данныхКак удалять дубли записей без потери связанных данных

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

Что подготовить

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

Порядок работы

  1. Сохраните исходный срез и создайте отчет кандидатов без изменения данных.
  2. Разделите точные совпадения надежного ключа и вероятные совпадения имени или адреса.
  3. Для каждой подтвержденной группы выберите основную запись и правила объединения полей.
  4. Перенесите ссылки и сохраните таблицу соответствия старых идентификаторов новым в одной согласованной операции.
  5. Проверьте связанные документы и только затем помечайте лишние записи как объединенные или удаляйте по политике.

Разобранный пример

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

Как проверить результат

  • Каждая старая ссылка разрешается в правильный объект после объединения.
  • Неподтвержденные похожие записи остаются отдельными.
  • Повтор процедуры не объединяет уже обработанные группы заново.

Если что-то пошло не так

При конфликте надежных идентификаторов остановите автоматическое слияние группы. Не выбирайте «самую свежую» запись без оценки происхождения поля. Возможность разъединения требует сохраненной истории переноса и исходных значений.

Карточка слияния одной группы

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

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

Разделите решения человека и техническое выполнение. Подтвержденный список групп можно сохранить как вход процедуры, чтобы повторный запуск не заново угадывал совпадения. При изменении данных между подтверждением и применением пересмотрите затронутую группу. Для отмены ошибочного слияния нужна информация, какие поля и связи принадлежали каждой записи, а не только старый идентификатор. Если такую отмену обеспечить нельзя, сначала используйте мягкую пометку и дополнительную проверку. Отдельно проверьте поиск по прежним идентификаторам: внешние системы могут продолжать присылать их даже после успешного объединения внутри вашего справочника.

Промпт для разбора ваших материалов

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

Частые вопросы

Можно ли сравнивать только нормализованное имя?

Это полезно для поиска кандидатов, но часто недостаточно для подтверждения идентичности.

Когда удалять исходные карточки?

После переноса связей и проверки, если политика допускает удаление. Иногда правильнее сохранять запись о слиянии.

Материал библиотеки решений Ильи Тарасова / TarasovWeb.

О проекте

Практическая библиотека Ильи Тарасова и TarasovWeb. Telegram-канал · Личная страница · ВКонтакте.

#tarasovweb #ИльяТарасов