Дубликаты в CSV: найти и разобраться
Дубли редко бывают точными копиями. Чаще это две записи об одном и том же, различающиеся лишним пробелом, регистром или заполненностью одного поля — и именно поэтому они переживают проверку на уникальность.
Три вида повторов
- Полные дубли — совпадает вся строка. Обычно следствие повторной загрузки файла. Находятся легко.
- Дубли по ключу — совпадает идентификатор, различается содержимое. Самый опасный случай: непонятно, какая запись верная.
- Нечёткие дубли — различаются написанием: «ООО Ромашка» и «ООО "Ромашка"», «Иванов А.С.» и «Иванов Андрей Сергеевич». Автоматически ловятся плохо, но нормализация снимает половину случаев.
Как искать
Инструмент — группировка. Сгруппируйте по полю-кандидату и добавьте показатель «количество»: всё, где количество больше единицы, и есть повторы.
Если ключ составной — группируйте по нескольким полям сразу. Типичные сочетания: «полис + дата случая», «код позиции + склад», «ИНН + период».
Быстрая прикидка без группировки: в статистике колонки есть число уникальных значений. Если оно меньше числа строк — повторы точно есть, и сразу видно, сколько.
Нормализация перед поиском
Прежде чем считать повторы, стоит убрать различия, которые повторами не являются:
- лишние пробелы по краям — в DBF и выгрузках из старых систем они есть почти всегда;
- регистр — для кодов и наименований обычно не значим;
- разное написание одного значения:
+7 (999) 123-45-67и79991234567.
Первые два случая решаются настройками разбора и сравнения. Третий — выражением: сгруппировать не по самому полю, а по приведённому значению.
Что делать дальше
Найти повторы — половина дела; дальше нужно решить, какая запись верная. Несколько подходов, которые обычно работают:
- оставить более позднюю по дате изменения — если такое поле есть;
- оставить более заполненную: у одной из записей часть полей пустая;
- посмотреть, различаются ли суммы: если да, это не дубль, а две разные операции с одинаковым номером — и разбираться нужно в источнике.
Отфильтрованный список повторов выгружается отдельным файлом — обычно его и передают тому, кто отвечает за данные в системе.
Частые вопросы
Можно ли удалить дубли прямо в просмотрщике?
Правка сейчас доступна только для DBF. Для CSV подход другой: отобрать нужные строки фильтром и выгрузить результат.
Как найти строки, которых нет во втором файле?
Это уже сравнение двух таблиц по ключу — про него есть отдельная статья.
Сколько строк выдерживает группировка?
Ограничение — полмиллиона различных групп; число исходных строк значения не имеет.