Hallo,
Ich versuche, Duplikate auszuwählen (und zu löschen), nachdem ich zwei Datentabellen mit einer Quellspalte kombiniert habe. Ich habe zwei Kriterien für eine Auswahl:
-Die doppelten Werte sollen passen in 2 Spalten (Match:col1,:col2), funktioniert gut.
-Die doppelten Werte sollen nicht haben den gleichen Wert in der generierten Quellspalte.
Ich bin mir nicht sicher, wie ich das zweite Kriterium codieren kann. Gibt es eine einfache !=-Zeile oder „stimmt nicht“ mit „:Source Table“ überein?
dt1 << concatenate (dt1, dt2, append to first table(1), Create Source Column ) ;
dt1 << Select Duplicate Rows (Match (:col1, :col2)) ;
dt1 << Delete Rows();
Ich denke, Sie müssen einen anderen Ansatz wählen.Ihre übermittelte JSL weist einige Probleme und eine Fehlinterpretation der Funktion „Doppelte Zeilen auswählen“ auf.
Ihre Verkettungsanweisung erstellt eine neue Datentabelle, in der Ihre Datentabelle dt1 zweimal in der Ausgabetabelle repliziert wird.
Die Funktion „Doppelte Zeilen auswählen“ findet nur Duplikate innerhalb derselben Spalte.
Ich schlage vor, dass Sie die Verwendung der Join-Plattform in Betracht ziehen, mit der Sie ermitteln können, welche Zeilen zwischen den beiden Datentabellen doppelte Werte aufweisen.
Hier ist ein Beispiel für den Vergleich zweier Datentabellen und die Feststellung, dass die Person namens Robert in beiden Tabellen enthalten ist.

Names Default To Here( 1 );
dt1 = New Table( "one",
Add Rows( 20 ),
New Column( "name",
Character,
"Nominal",
Set Values(
{"KATIE", "LOUISE", "JANE", "JACLYN", "LILLIE", "TIM", "JAMES", "ROBERT", "BARBARA", "ALICE",
"SUSAN", "JOHN", "JOE", "MICHAEL", "DAVID", "JUDY", "ELIZABETH", "LESLIE", "CAROL", "PATTY"}
)
)
);
dt2 = New Table( "Two",
Add Rows( 20 ),
New Column( "name",
Character,
"Nominal",
Set Values(
{"FREDERICK", "ALFRED", "HENRY", "LEWIS", "EDWARD", "CHRIS", "JEFFREY", "MARY", "AMY", "ROBERT",
"WILLIAM", "CLAY", "MARK", "DANNY", "MARTHA", "MARION", "PHILLIP", "LINDA", "KIRK", "LAWRENCE"}
)
)
);
dt3 = dt1 << Join(
With( dt2 ),
Merge Same Name Columns,
By Matching Columns( :name = :name ),
Drop multiples( 1, 0 ),
Include Nonmatches( 1, 1 ),
Preserve main table order( 1 ),
Output Table( "together" )
);
dt3 << select where( :Match Flag == 3 );
//dt3 << Delete Rows();
//dt3 << delete columns(match flag);Danke Jim, das funktioniert gut!
Ich freue mich, mehr über die Join-Funktion zu erfahren.
Grüße,
Stijn