В таблице рядом могут идти несколько строк одного клиента. Нужно объединить соседние строки по непустому email или, в отдельном варианте настройки, по external_id, не потеряв различающиеся имена и другие значения.
Создайте итоговую колонку email из email_raw, примените к ней только Любое → Убрать пробелы по краям, затем включите объединение похожих строк по текущему столбцу с точным совпадением и разделителем ;. Если нужно собрать все повторы ключа, сначала отсортируйте данные по нему; без сортировки объединятся только уже соседние повторы.
Как настроить в Eofferix
Добавьте или откройте итоговую колонку
email, выберите источникомemail_rawи оставьте единственное преобразование Любое → Убрать пробелы по краям. Названия колонок относятся только к примеру; универсальное приведение адресов к нижнему регистру здесь не применяется.
Колонка email получает значение из email_raw и удаляет только внешние пробелы. В дополнительных настройках колонки включите изменение структуры строк и выберите режим объединения похожих строк.
В качестве ключа объединения выберите текущий столбец, оставьте значение для сравнения пустым, задайте точное совпадение и разделитель
;. Не рассчитывайте на пробел после точки с запятой: настройка нормализуется, поэтому фактический результат будетзначение1;значение2.
Выбран режим объединения, точное совпадение и разделитель ; без пробела. Если нужно собрать все повторы, до запуска стабильно отсортируйте таблицу так, чтобы одинаковые ключи шли подряд; если порядок входных строк нужно сохранить, объединятся только соседние повторы. Затем проверьте результат. Для сценария по
external_idнастройте отдельный запуск с этой колонкой как ключом; один режим не означает условие «email ИЛИ external_id».
Соседние ключи совпали без учёта регистра, а различающиеся значения собраны через ;. Намеренно неотсортированный несоседний пример и пустые ключи остались отдельными строками.
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_id | C-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 сохраняет варианты, но не решает, какой из них правильный.