Очистка и объединение данных

Как объединить соседние дубли клиентов по email или external_id

2026-06-20
Задача

В таблице рядом могут идти несколько строк одного клиента. Нужно объединить соседние строки по непустому email или, в отдельном варианте настройки, по external_id, не потеряв различающиеся имена и другие значения.

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

Создайте итоговую колонку email из email_raw, примените к ней только ЛюбоеУбрать пробелы по краям, затем включите объединение похожих строк по текущему столбцу с точным совпадением и разделителем ;. Если нужно собрать все повторы ключа, сначала отсортируйте данные по нему; без сортировки объединятся только уже соседние повторы.

Как настроить в Eofferix

  1. Добавьте или откройте итоговую колонку email, выберите источником email_raw и оставьте единственное преобразование ЛюбоеУбрать пробелы по краям. Названия колонок относятся только к примеру; универсальное приведение адресов к нижнему регистру здесь не применяется.

    Открытие настроек итоговой колонки email в табличном редакторе Eofferix
    Колонка email получает значение из email_raw и удаляет только внешние пробелы.
  2. В дополнительных настройках колонки включите изменение структуры строк и выберите режим объединения похожих строк.

  3. В качестве ключа объединения выберите текущий столбец, оставьте значение для сравнения пустым, задайте точное совпадение и разделитель ;. Не рассчитывайте на пробел после точки с запятой: настройка нормализуется, поэтому фактический результат будет значение1;значение2.

    Настройки объединения соседних строк по текущему столбцу email
    Выбран режим объединения, точное совпадение и разделитель ; без пробела.
  4. Если нужно собрать все повторы, до запуска стабильно отсортируйте таблицу так, чтобы одинаковые ключи шли подряд; если порядок входных строк нужно сохранить, объединятся только соседние повторы. Затем проверьте результат. Для сценария по external_id настройте отдельный запуск с этой колонкой как ключом; один режим не означает условие «email ИЛИ external_id».

    Результат объединения соседних клиентов с вариантами email и имени
    Соседние ключи совпали без учёта регистра, а различающиеся значения собраны через ;. Намеренно неотсортированный несоседний пример и пустые ключи остались отдельными строками.
Важно. email_raw, email, external_id и показанные адреса — только пример. Объединение выполняется за один проход только для соседних строк с одинаковым непустым ключом. Точное сравнение не учитывает регистр, но сбор уникальных выводимых значений учитывает его: Anna@Example.test и anna@example.test образуют одну группу, однако обе формы попадут в результат.

Что получится

Соседние исходные строкиРезультатПочему
Anna@Example.test / Анна Петрова + anna@example.test / Анна П.Anna@Example.test;anna@example.test / Анна Петрова;Анна П.После действия Убрать пробелы по краям ключи совпадают без учёта регистра; различающиеся по регистру email и разные имена сохраняются через ;.
petr@example.test / Пётр + petr@example.test / Пётр П.petr@example.test / Пётр;Пётр П.Полностью одинаковый email выводится один раз, а два разных имени объединяются.
anna@example.test, затем ivan@example.test, затем снова anna@example.testтри строкиКонтрольный пример намеренно не отсортирован: повтор Анны не возвращается в уже закрытую группу. После сортировки по email он окажется рядом и объединится.
пустой email / Клиент A + пустой email / Клиент Bдве строкиПустые ключи никогда не считаются совпадением.
C-1001 / Анна + C-1001 / Анна П. при ключе external_idC-1001 / Анна;Анна П.Отдельная настройка по external_id объединяет соседнюю группу так же.
abc-1 + ABC-1 при ключе external_idодна группаТочное сравнение ключа не учитывает регистр; используйте такой ключ только если это безопасно для ваших идентификаторов.
один ключ, разные телефоны или именавсе уникальные значения через ;Сервис не выбирает победителя и не определяет, какое из конфликтующих значений верное.

Что проверить перед выгрузкой

  • В колонке ключа есть только ЛюбоеУбрать пробелы по краям; автоматическое приведение email к нижнему регистру не используется.
  • Если нужно объединить все повторы, перед запуском строки стабильно отсортированы по выбранному ключу, потому что объединяются только соседние совпадения.
  • Режим использует текущий столбец, точное совпадение, пустое значение сравнения и разделитель ;.
  • Anna@Example.test и anna@example.test объединяются в одну строку, но итоговый email равен Anna@Example.test;anna@example.test.
  • Намеренно неотсортированный контрольный пример оставляет несоседний повтор отдельной строкой; после сортировки по ключу этот повтор присоединится к группе.
  • Две строки с пустым ключом остаются двумя строками; конфликтующие значения просмотрены до выгрузки.

Ограничения примера

  • Это объединение соседних групп, а не глобальное удаление дублей во всём файле. Стабильная сортировка по ключу обязательна, если нужно собрать все его повторы.
  • За один запуск выбирается один ключ. Чтобы проверить email или external_id по логике ИЛИ, нужна отдельная подготовка единого ключа либо два осознанных этапа.
  • Пустой ключ не объединяет строки, поэтому записи без email сохраняются отдельно.
  • Точное совпадение означает равенство всей строки после удаления внешних пробелов и выполняется без учёта регистра; это не поиск подстроки. Стандарт SMTP требует учитывать регистр локальной части почтового адреса, поэтому используйте такой ключ email только если ваша политика данных считает варианты регистра одним адресом; см. раздел 2.4 RFC 5321.
  • Уникальные непустые значения каждой колонки соединяются фактическим разделителем ; без пробела. Если значения конфликтуют, Eofferix сохраняет варианты, но не решает, какой из них правильный.

Обрабатывайте данные быстрее с Eofferix

Создайте бесплатный аккаунт, чтобы автоматизировать каталоги и прайс-листы под ваши правила.

Зарегистрироваться