Краткий ответ
Дедупликация неэффективна, если рассматривать ее как разовую чистку данных. По сути, это три решения: что определяет уникальность, что превалирует в случае конфликта, и как предотвратить повторное возникновение проблемы. Технический инструмент — это самая легкая часть.
Распространенная ошибка заключается в применении нечеткого сопоставления (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
Профессиональные ресурсы
- Salesforce Data 360 — https://www.salesforce.com/data/
- Salesforce Data 360 Architecture — https://architect.salesforce.com/docs/architect/fundamentals/guide/data-360-architecture.html
- HPI Pro – Интеграции и данные — https://hpi.pro/integrations-data
