Краткий ответ

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

Распространенная ошибка заключается в применении нечеткого сопоставления (Fuzzy Matching) к именам, получении списка из 12 тысяч потенциальных совпадений и попытке разрешить их вручную под давлением сроков. Работает обратный подход: сначала сужают область принятия решений с использованием строгих ключей, оставляя для человеческого обзора только серую зону.

Подробный план миграции описан в Руководстве по миграции данных в Salesforce.

Три уровня сопоставления

УровеньОснованиеДействие
Строгий ключИНН, ОГРН, идентификатор из исходной системы, подтвержденный emailАвтоматическое объединение
Комплексный ключНормализованное имя + город + нормализованный телефонАвтоматическое объединение с высокой оценкой соответствия
Текстовое сходствоТолько имя, свободный текстовый адресТолько ручной обзор

Типичное соотношение для управляемого проекта: около 70% дубликатов разрешаются на первом уровне, около 20% — на втором, и около 10% поступают к человеку. Если большинство совпадений попадает на третий уровень, это признак того, что работа по нормализации не была выполнена, а не того, что данные особенно плохи.

Нормализация перед сравнением

Перед любым сравнением создаются нормализованные вспомогательные столбцы, не меняя при этом исходные данные: удаление корпоративных суффиксов (ООО, Ltd), унификация пробелов и кавычек, приведение телефона к формату E.164, перевод email в нижний регистр с удалением меток после плюса, и разделение адреса на улицу/номер/город.

Сама по себе нормализация обычно сокращает от трети до половины "сложных" дубликатов еще до применения алгоритма сходства.

Golden Record на уровне поля

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

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

Что происходит со связями и историей

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

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

Сценарий: импортер с 210 тысячами контактов

B2B-импортер приступил к миграции с 210 тысячами записей контактов из трех систем. Первый запуск инструмента сходства вернул 31 тысячу подозрительных пар — количество, которое никто не мог просмотреть.

Команда остановилась и изменила порядок. Сначала были нормализованы email и телефон: 14 тысяч пар были автоматически закрыты по строгому ключу. Затем было определено, что бизнес-единицей является сайт клиента, а не корпорация, что исключило из списка 6 тысяч пар, которые были легитимными — отдельные филиалы одной сети. Осталось 4 200 пар для промежуточного уровня, из которых 3 800 были закрыты с высокой оценкой. Для ручного обзора осталось 400 пар, и два человека закрыли их за три дня.

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

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

Три основных источника возвращают дубликаты после Go Live: ручной ввод без активных правил сопоставления (Matching Rules), интеграции, создающие новую запись вместо обновления (Upsert по External ID решает большинство из них), и формы Web-to-Lead без проверки существования. Если эти три источника не были закрыты, уровень дубликации вернется к исходному в течение одного-двух лет.

Распространенные риски и действия по предотвращению

РискКак он проявляется на практикеДействие по предотвращению
Агрессивное объединениеРазные клиенты объединены и их невозможно разделитьВысокий порог оценки + обзор в серой зоне
Отсутствие определения уникальностиПовторяющиеся споры о том, что считать одним и тем же клиентомЗадокументированное решение на уровне сущности
Потеря историиАктивности и возможности исчезли при объединенииОтчет "Что изменилось" и сохранение исходных идентификаторов
Очистка без предотвращенияДубликаты возвращаются через несколько месяцевMatching Rules, Upsert и защищенные формы
Очистка после загрузкиКаждое объединение затрагивает живые связиОчистка на этапе Staging

Как измерять успех

ОбластьЧто измеряетсяЧастота проверки
Уникальность (Uniqueness)Оценочная доля дубликатов по сущностиЕженедельно при миграции, ежеквартально после
Точность объединенияПроцент отмененных или вручную исправленных объединенийПри каждой волне объединений
ПредотвращениеНовые записи, заблокированные как дубликаты при вводеЕжемесячно
Бизнес-влияниеДвойные обращения к клиенту, точность отчетов по клиентамЕжеквартально

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

Чек-лист перед запуском объединения

  • ☐ Определена бизнес-единица: корпорация, сайт или договор
  • ☐ Созданы столбцы нормализации без изменения источника
  • ☐ Три уровня сопоставления с задокументированными числовыми порогами
  • ☐ Политика Golden Record на уровне поля, одобренная бизнесом
  • ☐ Определено, что происходит с активностями, возможностями и владением
  • ☐ Исходные идентификаторы сохраняются после объединения
  • ☐ Отчет "Что изменилось" может быть сгенерирован и восстановлен
  • ☐ Пробный запуск на выборке с ручной проверкой
  • ☐ Matching Rules и Upsert активны для предотвращения
  • ☐ Назначен постоянный ответственный за процесс после Go Live

Профессиональные ресурсы