Дубли данных в процессах: откуда берутся и в каком порядке их сводить

Один и тот же клиент обычно живёт в четырёх местах: карточка в CRM, переписка в мессенджере, контрагент в учётной системе, адрес доставки в таблице склада. Каждая система считает его своим и хранит под собственным ключом. Разберём, откуда берутся дубли, как измерить их долю за один день и в каком порядке сводить — чтобы не получить обратную ошибку и не склеить двух разных людей.

Коротко

  • Дубли — не сбой, а нормальный результат работы без правил на входе: в кейсе с базой 318 тыс. контактов дублями оказались 73 тыс., то есть примерно каждый четвёртый.
  • По данным Plauti (2021, анализ 12 млрд записей Salesforce), больше 45% новых записей в CRM — дубликаты, а у записей, приходящих из интеграций, доля доходит до 80%.
  • Дубль бьёт не по диску, а по процессу: два звонка клиенту, две скидки, две задачи у разных менеджеров и отчёт, в котором клиентов вдвое больше, чем есть.
  • Порядок наведения обратный интуиции: сначала правило на входе и единый ключ, потом разовая чистка, только потом регулярная сверка.
  • Склейка без человека опасна: десять контактов с одной корпоративной почтой — это десять учителей одной школы, а не один клиент.

Что считают дублем, а что — разными людьми

Дубль — это две записи об одном объекте: клиенте, контрагенте, адресе доставки. Бывают полные копии (запись целиком продублирована импортом) и частичные, где совпадает только часть полей: телефон один, а имя записано иначе. Рядом стоит третья категория, которая всё портит, — похожие, но разные записи: тёзки, супруги с общим телефоном, сотрудники одной компании с общей корпоративной почтой.

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

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

Как один клиент превращается в четыре записи

Возьмём обычный маршрут заказа. Человек оставил заявку на сайте, потом написал в мессенджер, менеджер выставил счёт в учётной системе, склад записал адрес в свою таблицу. Четыре касания — четыре записи, и ни одна из систем не знает, что речь об одном человеке. Причина не в халатности: у каждой системы свой ключ. В CRM это внутренний идентификатор карточки, в учётной системе — ИНН и наименование, в мессенджере — номер телефона, в почте — адрес.

Маршрут одного клиента через четыре системыКак одна заявка превращается в несколько несвязанных записей в разных системах1Заявкасайт, телефон, имя2Мессенджертот же клиент, новыйканалвторая карточка3CRMкарточка №14Учётконтрагент №25Доставкаадрес в третьем видеКрасным отмечено место, где тот же клиент заводится второй раз — с новым ключом
Рисунок можно прокрутить вбок →
Схема процесса, а не отраслевая статистика: показано, в каких точках типового маршрута заявки появляется вторая запись о том же клиенте. Каждый переход между системами — это ещё один ключ, по которому записи не совпадут.

Пока ключи не связаны, «склейка» держится на памяти менеджера. Это работает, пока клиентов десятки и менеджер один. На сотнях карточек память кончается, и появляются симптомы, которые обычно замечают поздно: клиент говорит «мне уже звонили», а в CRM он числится новым.

Шесть источников дублей, которые встречаются чаще всего

  • Импорт из файла: выгрузили старую базу, залили рядом с новой — совпадения никто не проверял.
  • Интеграции: каждая форма на сайте, телефония и чат создают запись, даже если клиент уже есть в базе.
  • Разные написания одного и того же: «+7 (910) 582-82-06», «89105828206» и «8 910 582 82 06» — три карточки.
  • Несколько отделов или филиалов: у каждого своя база и свой взгляд на то, кто «их» клиент.
  • Смена данных клиента: новая фамилия, адрес или паспорт обновились не во всех системах.
  • Разные роли одного лица: физлицо и ИП, плательщик и получатель — формально разные записи.

Сколько дублей бывает на самом деле

Публичные оценки расходятся в разы, потому что считают разное: одни — долю новых записей, другие — долю всей базы. По данным Plauti, которая в 2021 году разобрала больше 12 млрд записей в Salesforce своих клиентов, дубликатами оказались более 45% новых записей; у записей, приходящих из интеграций — маркетинговых сервисов и веб-форм, — доля доходила до 80%, у импортируемых файлов была заметно ниже — 19%. Это данные вендора по своему пулу клиентов и одной платформе, а не отраслевой стандарт.

Второй ориентир — разбор реальной базы amoCRM на 318 тыс. контактов, описанный интегратором в 2022 году. Предварительная оценка давала около 10% дублей, после скриптовой проверки и ручного разбора нашли и объединили 73 тыс. записей — почти четверть базы. Ещё одна цифра оттуда же объясняет, почему тему не откладывают: при слиянии двух банков пересечение клиентских баз доходит до 10%, а внутри систем дублирование бывает заметно выше.

Доля записей-дубликатов в разных выборкахСтолбцы показывают, какую долю записей признали дублями в трёх независимых разборах0255075100Доля записей-дубликатов, % (разные источники и выборки)Записи из интеграций80%Новые записи в CRM45%База 318 тыс. контактов23%Импорт файлов19%
Рисунок можно прокрутить вбок →
Источники: Plauti, анализ 12 млрд записей Salesforce за 2021 год (новые записи, интеграции, импорт); кейс amoCRM на 318 тыс. контактов, 2022 (73 тыс. найденных дублей). Строки взяты из разных выборок и лет, поэтому это не единая серия, а четыре отдельных ориентира.

Что дубль делает с процессом

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

  • Клиент получает два звонка с одним предложением и делает вывод о компании, а не о базе.
  • Менеджеры разных отделов ведут одного клиента параллельно: время потрачено дважды, между людьми — конфликт.
  • Автоматика срабатывает на каждой карточке отдельно: два письма, два счёта, две задачи на склад.
  • Аналитика врёт вверх: клиентов «больше», повторные продажи «растут», конверсия искажена.
  • Растут расходы на сам учёт: в разобранном кейсе дубли упирались в лимиты тарифа, и компании пришлось бы докупать 15 лицензий — около 150 тыс. рублей в год.

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

Единый ключ: что считать главным идентификатором

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

Признаки сопоставления записей и где каждый ломается
ПризнакНадёжностьГде ломается
Телефон в едином форматеВысокая, если нормализованМеняется; бывает общим у семьи или в офисе
Email в нижнем регистреСредняяКорпоративные адреса общие у нескольких сотрудников
ИНН для юрлицВысокаяЕсть не у всех клиентов, бывают опечатки
ФИО и дата рожденияНизкаяТёзки и однофамильцы совпадают полностью
Внутренний ID системыВысокая внутри одной системыМежду системами не связан — это и есть исходная проблема

Рабочая схема — два уровня. Первый: внутренний мастер-ключ, который присваивается один раз и не меняется никогда. Второй: набор атрибутов для сопоставления — нормализованный телефон, почта, ИНН — по которым новая запись ищет свою пару. Как такой контур устроен в проектах, разобрано в разделе подход.

Порядок наведения: правила, чистка, сверка

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

  1. Инвентаризация: перечислить системы, где живут клиенты, и ключ каждой из них.
  2. Нормализация на входе: телефон в один формат, почта в нижнем регистре, обрезанные пробелы.
  3. Запрет на создание: система ищет совпадение до сохранения и предлагает существующую карточку.
  4. Пилот на выборке 1–2 тыс. записей: проверить правила на живых данных и вручную разобрать спорные пары.
  5. Разовая чистка с журналом: что с чем склеено, кто подтвердил, как откатить.
  6. Регламент владения полями: у каждого ключевого поля один источник правды, остальные системы его принимают.
  7. Регулярная сверка и метрика: доля дублей, доля записей без ключа, число слияний за период.
Что делать в первую очередь, а что — потомМатрица вариантов работы с дублями по эффекту и сложности внедренияНормализация телефона и почтыДешёвый шаг, который убирает частьповторов ещё на входеЕдиный ключ и запрет дубляГлавная работа: правило на входе,мастер-ключ и проверка до сохраненияРучная чистка раз в годДорого по времени и возвращается: входостаётся прежнимСклейка по совпадению имениМного ложных слияний: тёзки, семьи собщим телефоном, общие почтысложность внедренияпростаязаметныйэффект
Рисунок можно прокрутить вбок →
Наша оценка по опыту проектов, а не отраслевой стандарт: расположение квадрантов зависит от объёма базы и числа систем.

Как измерить долю дублей за один день

Полная сверка «каждый с каждым» не нужна и не по средствам: в разборе на Хабре приведён расчёт, где сравнение двух баз по миллиону записей даёт триллион операций — почти 12 дней непрерывной работы даже при микросекунде на сравнение. Поэтому считают не всё, а выборку: берут 1–2 тыс. записей, нормализуют ключ, группируют по нему и смотрят долю групп больше одного. Этого достаточно, чтобы понять масштаб и защитить бюджет проекта.

Полная чистка по тому же принципу занимает часы, а не месяцы: в кейсе с 318 тыс. контактов скриптовая проверка шла больше 30 часов, зато ручное объединение, по оценке исполнителей, заняло бы больше месяца и остановило бы остальные работы. Разница между «посчитать» и «склеить» — в проверке пар человеком: её нельзя ускорить, можно только сузить.

Метрика. В отчёт по процессу достаточно трёх чисел: доля дублей в базе, доля записей без единого ключа и число слияний за период. Если первая падает, а третья растёт — правила работают.

Где остаётся человек

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

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

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

Получить диагностику

Источники

  1. Plauti. 80% of all new integration data in CRMs is duplicate (архивная копия статьи, январь 2022) — анализ более 12 млрд записей Salesforce за 2021 год: свыше 45% новых записей — дубликаты, у интеграций — 80%, у импорта — 19%; данные вендора по своему пулу клиентов
  2. PRO CRM: как нашли 73 тысячи дублей из 318 тысяч контактов в amoCRM (vc.ru, 12.10.2022) — описание проекта: 318 тыс. контактов, предварительная оценка 10% дублей, по факту 73 тыс. объединённых записей, проверка скриптом более 30 часов, риск докупки 15 лицензий примерно на 150 тыс. рублей в год
  3. HFLabs на Хабре. Поиск дубликатов в клиентском MDM на миллиард записей (01.10.2024) — устройство поиска дублей в банковском MDM: отсутствие единого ID между системами, пересечение клиентских баз при слиянии банков до 10%, оценка стоимости сравнения «каждый с каждым»

Читайте также

Что мы делаем

Заявка

Обсудим вашу задачу

Опишите процесс, который отнимает время, — вернёмся с планом автоматизации и оценкой.

Заявка получена

Мы свяжемся с вами с вопросами для диагностики. Обычно отвечаем в течение рабочего дня.

Не удалось отправить

Что-то пошло не так. Напишите нам в Telegram или на i@islenkov.ru.