2017-02-07 1 views
0

Kann jemand bitte helfen Sie mir mit unten Anforderung.SSIS-Ersetzen Sie die doppelte Spalte mit leeren String unter Beibehaltung der ursprünglichen Spalte

Ich habe eine Anforderung zu überprüfen, ob eine Spalte in einem Datensatz mit einer anderen Spalte übereinstimmt Ich möchte die doppelte Spalte durch eine leere Zeichenfolge ersetzen.

Angenommen, ich habe x1, x2, x3 Spalten. Wie überprüft man, ob x1 zu einer der Spalten x1, x2, x3 passt und wenn es übereinstimmt, möchte ich die doppelte Spalte durch eine leere Zeichenfolge ersetzen.

+1

nic x1 immer gleich x1? Könnten Sie ein klareres Beispiel geben? –

+0

Nein, kann oder darf nicht. Wenn es übereinstimmt, dann wird es Duplikat sein und ich muss diese doppelte Spalte durch eine leere Zeichenfolge ersetzen. – John

+0

Vielleicht bin ich ein Missverständnis. Möchten Sie feststellen, ob der Wert einer Spalte in einem Datensatz dem Wert mehrerer Spalten in einem anderen Datensatz entspricht? –

Antwort

0

Dies ist komplexer, als man erwarten würde. Hier sind 2 Optionen:

  1. Versuchen Sie die unscharfe Suche, indem Sie die Datei duplizieren und mit einer hohen Schwelle vergleichen. Ich vermute, dass Sie nach dem gleichen Datensatz suchen möchten, wenn es eine Übereinstimmung in anderen Spalten gibt, so dass Sie eine genaue Übereinstimmung für den Schlüssel erstellen müssen (gehen Sie auf die Registerkarte Spalten und klicken Sie mit der rechten Maustaste auf den Link Mappings bearbeiten) und machen Sie den Fuzzy auf den anderen. Sie können ein Feld nur einmal verknüpfen, um die Spalten nach Bedarf zu duplizieren.
  2. Führen Sie einen gespeicherten Proc mit allen Kombinationen aus, und generieren Sie eine Out-Tabelle mit den Ergebnissen (Sie können einen gespeicherten Proc mit dem OLE DB-Befehl ausführen). Ich würde wahrscheinlich mit diesem gehen, wenn ich mir der "Genauigkeit" der Daten sicher bin. Ansonsten geh mit dem Fuzzy.
0

Da Sie nur ein paar Spalten haben, können Sie nur einen Satz von Update-Anweisungen wie folgt ausgeführt werden:

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

Erfüllung dieser Aufgabe in einem SSIS Datenfluss ein bisschen schwierig wäre, da würden Sie versuchen, alle anderen Zeilen in allen Puffern verglichen mit der aktuellen Zeile zu vergleichen.

Stattdessen würde ich empfehlen, die Daten in einer Tabelle zu staffeln, wie Gordon Bell vorgeschlagen hat. Dann müssen Sie bestimmen, welche Zeile gewinnt, wenn ein Duplikat gefunden wird. Möglicherweise haben Sie eine Datumsspalte, um sie zu sortieren, oder Sie fügen dem Datenfluss in ssis eine Zeilennummerspalte hinzu und sortieren nach dem Erhalt der Daten.

Hier ist ein Beispiel dafür, wie man die Gewinnreihe und aktualisieren andere mit einem selbst finden könnte beitreten: Deleting duplicate record in SQL Server

m

Verwandte Themen