Deduping редко бывает простым. Это потому, что учетные записи, которые должны быть дедуплированы, часто имеют несколько разные значения, это некоторые из полей. Поэтому выберите, какая запись сохранить может быть проблематичной. Кроме того, обманщики часто являются людьми, и трудно определить, являются ли два Джона Смита двумя людьми или одним человеком, который дублируется. Так что потратьте много (50% или более всего проекта) вашего времени, определяя, что составляет дуп, и как справляться с различиями и дочерними записями.
Откуда вы знаете, что является правильным значением? Дальнейшая дедупликация требует, чтобы вы обрабатывали все дочерние записи, а не сироты. Что происходит, когда вы обнаруживаете, что, изменив идентификатор на дочерней записи, вы внезапно нарушаете один из уникальных индексов или ограничений - это произойдет в конечном итоге, и ваш процесс должен обработать его. Если вы выбрали глупо, чтобы применить все свои ограничения только для тщательного приложения, вы можете даже не знать, что ограничения нарушены. Когда у вас есть 10 000 записей для дедупликации, вы не будете проходить через приложение для дедуплирования по одному за раз. Если ограничение не находится в базе данных, удачи в сохранении целостности данных при дедуплировании.
Еще одно осложнение заключается в том, что дубликаты не всегда точно совпадают с именем или адресом. Например, salesrep по имени Джоан Мартин может быть дубликом репутации продавца Joan Martin-Jones, особенно если у них одинаковый адрес и адрес электронной почты. Или вы могли бы иметь Джона или Джонни в названии. Или тот же адрес улицы, кроме одной записи, аббревиатура ST. и одну простую улицу. В SQL-сервере вы можете использовать SSIS и нечеткую группировку, чтобы также идентифицировать ближние совпадения. Они часто являются наиболее распространенными обманами, поскольку тот факт, что не были точными совпадениями, - это то, почему они попали в дуплексы в первую очередь.
Для некоторых типов дедуплирования вам может потребоваться пользовательский интерфейс, так что человек, выполняющий дедупликацию, может выбрать, какое из двух значений использовать для определенного поля. Это особенно верно, если человек, который дедуплируется, состоит из двух или более ролей. Возможно, данные для определенной роли обычно лучше, чем данные для другой роли. Или может быть, что только пользователи будут точно знать, что является правильным значением, или им может потребоваться связаться с людьми, чтобы узнать, действительно ли они являются дураками или просто двумя людьми с тем же именем.
Вы имеете в виду коллапсирующие * идентичные * дубликаты (кроме ПК) или свертывающие * достаточно похожие * дубликаты? Первое можно сделать довольно прямо, последний - потенциальный мир неопределенности и боли. –
@j_random_hacker - Я имел в виду совершенно идентичный. См. Формулировку сообщения: «Я имею в виду избавление от дубликатов ... строк, которые дублируются в * все, кроме поля ПК *». – froadie
Извините, я не читал достаточно внимательно ... –