Помогите мне де-дублировать предоставленный набор данных
Де-дублирование предоставленного набора данных
Записи будут считаться дубликатами, если они удовлетворяют всем следующим условиям:
а. точное совпадение фамилии
б. имя нечеткое / похожее совпадение (баллы за креативность здесь)
c. любое точное совпадение одного или нескольких из следующих параметров::
1. Адрес Электронной Почты
2. Полный почтовый адрес
3. Номер Телефона
Когда-то это было ?? количество повторяющихся записей идентифицируется, они должны быть объединены в одну запись на группу, и данные объединяются таким образом, чтобы у нас был максимально полный набор атрибутов.
Пример: а. Если две повторяющиеся записи имеют общий адрес электронной почты, но только одна имеет полный почтовый адрес, результирующая объединенная запись должна иметь как адрес электронной почты, так и почтовый адрес.
b. если две повторяющиеся записи имеют разные значения для одной из следующих записей, объединенная запись должна использовать более поздний атрибут, идентифицированный значениями временных меток ModifiedOn и/или CreatedOn
имя
адрес электронной почты
полный почтовый адрес
номер телефона
Полученная де-дублированная “Главная” запись должна быть добавлена к исходному набору данных с уникальным целочисленным идентификатором (вы можете заполнить его, как вам нравится), а затем этот новый идентификатор назначен в качестве родительского идентификатора дочерних дублированных исходных записей.
Сохраните и верните (теперь уже больший) набор данных в виде csv-файла
Csv файл с исходными данными имеет следующие столбцы :
Идентификатор CreatedOn createdon и modifiedon Customer_LastName Customer_FirstName Customer_AddressLine1 Customer_City Customer_State Customer_Zip Customer_HomePhone Customer_InternetEmail
Что я уже пробовал:
> попробовал разобрать csv-файл, содержащий данные, в таблицу данных и отфильтровать на основе требований.
> попробовал импортировать данные в SQL и использовать ADO.net чтобы отфильтровать запросы.
ZurdoDev
В чем заключается ваш вопрос?
Member 10183768
Какую логику я должен использовать в T-SQL, чтобы получить результат ?
Member 10183768
Какую логику я должен использовать в T-SQL, чтобы получить результат ?
ZurdoDev
Логика уже есть. Теперь вам нужно перевести его на sql.
Member 10183768
Не могли бы вы помочь мне перевести на SQL ? Я пишу консольное приложение .net для чтения данных в datatable, но не думаю, что это хороший подход.
ZurdoDev
Зависит. Я не буду делать все это для тебя. У меня есть своя работа. Где ты застрял?
Member 10183768
Извините, если мои ожидания ошибочны ! Я надеялся, что кто-нибудь напишет эту часть целиком.
ZurdoDev
Вряд ли это случится.
MadMyche
Ты говоришь 20 записей или 2000?
Member 10183768
60000
Pete O'Hanlon
Какой у вас код? На чем ты застрял?
#realJSOP
Он застрял на "твоем домашнем задании на сегодня"..."
Pete O'Hanlon
Жаль, что я не могу проголосовать здесь, но у меня есть виртуальная пятерка для этого.
Santosh kumar Pithani
Написание запроса-это не проблема, но сохраняйте образцы данных.Нижеприведенный запрос поможет вам ..всего наилучшего.
:С CTE AS(
выберите row_number()OVER(Partition by EmailAddress ORDER BY ISNULL(ModifiedOn,CreatedOn) DESC) AS RN ,* FROM Table_NAME
Где ([FullmailingAddress] не null и [фамилия]=@lastName и [имя], как @имя+'%') и
([EmailAddress]=@EmailAddress или [FullmailingAddress]=@FullmailingAddress или [PhoneNumber]=@PhoneNumber])
)
выберите * из CTE, где RN=1;