Member 10183768 Ответов: 1

Помогите мне де-дублировать предоставленный набор данных


Де-дублирование предоставленного набора данных

Записи будут считаться дубликатами, если они удовлетворяют всем следующим условиям:

а. точное совпадение фамилии
б. имя нечеткое / похожее совпадение (баллы за креативность здесь)
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;

1 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Вот кое - что - настолько близкое к ответу, насколько вы его получите, - но вам нужно будет выяснить, как его использовать.

TSQL: поиск как использовать DISTINCT

После того, как вы увидите, что это дает вам понять, как использовать его.