2017-02-07 3 views
0

Может ли кто-нибудь помочь мне с ниже Требование.SSIS-Заменить дублирующийся столбец пустой строкой, сохраняющей исходный столбец

У меня есть требование проверить, совпадает ли столбец в записи с любым другим столбцом, я хочу заменить повторяющийся столбец пустой строкой.

Скажите, что у меня есть столбцы x1, x2, x3. Как проверить, соответствует ли x1 любому столбцу x1, x2, x3, и если он соответствует, я хочу заменить дублированный столбец пустой строкой.

+1

не будут x1 всегда равен x1? Не могли бы вы привести более ясный пример? –

+0

Нет, это может быть или нет. Если он совпадает, то он будет дублироваться, и я должен заменить этот повторяющийся столбец пустой строкой – John

+0

Возможно, я не понимаю. Вы пытаетесь выяснить, совпадает ли значение столбца в одной записи со значением нескольких столбцов в другой записи? –

ответ

0

Выполнение более сложных задач, чем можно было бы ожидать. Вот два варианта:

  1. Попробуйте нечеткий поиск путем дублирования файла и сравнения его с самим собой с высоким порогом. Я подозреваю, что вы хотите проверить одну и ту же запись, если есть совпадение в других столбцах, поэтому вам нужно будет создать точное совпадение на ключе (перейдите под вкладку «Столбцы» и щелкните правой кнопкой мыши по ссылке «Редактировать сопоставление») и сделайте нечеткое на других. Вы можете связать поле только один раз, чтобы дублировать столбцы по мере необходимости.
  2. Выполняйте хранимую процедуру со всеми комбинациями и создайте таблицу с результатами (вы можете запустить хранимую процедуру с помощью команды OLE DB). Я, вероятно, поеду с этим, если я уверен в «точности» данных. В противном случае, пойдите с нечеткой.
0

Поскольку у вас есть только несколько столбцов, можно просто запустить набор операторов обновления, как следующее:

update Contacts 
set Phone2 = null 
where Phone2 = Phone1 

update Contacts 
set Phone3 = null 
where Phone3 = Phone1 

update Contacts 
set Phone3 = null 
where Phone3 = Phone2 
0

Выполнение этой задачи в пределах потока данных SSIS будет немного сложнее, потому что вы бы попытаться сравнить все остальные строки во всех буферах по сравнению с текущей строкой.

Вместо этого я бы рекомендовал организовать данные в таблице, как предложил Гордон Белл. Затем вам нужно определить, какая строка выигрывает при обнаружении дубликата. У вас может быть столбец даты для его сортировки или вы можете добавить столбец номера строки в поток данных в ssis и отсортировать по тому, как вы получили данные.

Вот пример того, как вы могли бы найти выигрышные строки и обновление других с автообъединением: Deleting duplicate record in SQL Server

м

Смежные вопросы