<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Hallo,
Dieses Problem verwirrt mich wirklich.
Ich möchte eine Verkettung vornehmen, aber in der einen Tabelle (dt2) habe ich auch einige Einträge, die ich bereits in der ersten Tabelle (dt1) habe. Ich möchte diejenigen in der ersten Datentabelle (dt1) behalten und sie in der zweiten (dt2) löschen.
Ich habe es bereits versucht und habe ein anderes Problem mit der Funktion „Auswählen wo“ und dem Löschen der Duplikate in der zweiten Tabelle vor der Verkettung. Ich habe eine Liste aller Duplikate, kann die Liste jedoch weder in der Select-Where-Klausel noch im Datenfilter als Variable verwenden
Summarize( a = by(column(dt, "band")),c=count );
Die Variable sieht so aus:
a = {"2_12_000264_0_9", "2_12_000265_0_1", "2_12_000267_0_3", "2_12_000269_1_3", "2_12_000269_2_1", "2_12_000270_1_7", "2_12_000270_2_5", „2_12_000271_0_1“, „2_12_000272_1_9“, „2_12_000272_2_7“, „2_12_000273_1_1“, „2_12_000273_2_8“ , „2_12_000274_0_4“, „2_12_000275_1_3“, „2_12_000275_2_1“, „2_12_000276_1_4“, „2_12_000276_2_2“};
und der komplette Datenfilter:
dt2 << Data Filter( Add Filter( columns( :Bandname ), Where( :Bandname == {"2_12_000264_0_9", "2_12_000265_0_1", "2_12_000267_0_3", "2_12_000269_1_3", "2_12_000269_2_1", "2_12_000270_1_7", "2_12_000270_2_5", "2_12_000271_0_1", "2_12_000272_1_9", "2_12_000272_2_7", "2_12_000273_1_1", "2_12_000273_2_8", "2_12_000274_0_4", "2_12_000275_1_3", "2_12_000275_2_1", "2_12_000276_1_4", "2_12_000276_2_2"}), Display( :Bandname, Size( 221, 259 ), List Display ), Mode( Show( 1 ) ) ));
Aber die Verwendung der Variablen funktioniert nicht:
Add Filter( columns( :Bandname ), Where( :Bandname == a ), Display( :Bandname, Size( 221, 259 ), List Display ), Mode( Show( 1 ) ) ));
Warum??
Das Hauptproblem ist jedoch das oben genannte: Duplikate werden vor der Verkettung gelöscht.
Dank im Voraus
Vielen Dank, das funktioniert großartig ... und Ihr erster Code ist wirklich gut zum Verständnis von JSL
Ich weiß nicht warum, aber in manchen Fällen löst JSL Listenvariablen einfach nicht auf, selbst wenn eine Klartextliste perfekt ausgewertet wird.
Eine Möglichkeit, dies zu umgehen, besteht darin, einen Ausdruck zu verwenden und ihn vor der Auswertung durch eine analysierte Liste zu ersetzen. Hier ist ein Beispiel für einen Datenfilter:
dt = Offen ( „$ENGLISH_SAMPLE_DATA/Big Class.jmp“ ) ;
A = { „KATIE“ , "HENRY" , "ROBERT" } ;
df_expr = Ausdruck ( dt << Datenfilter ( Filter hinzufügen ( Säulen ( : Name ) , Wo ( : Name == A ) , Anzeige ( : Name , Listenanzeige ) ) ) ) ;
Ersatzeinto ( df_expr , Ausdruck ( A ) , Analysieren ( Verkohlen ( Bewertung ( A ) ) ) ) ;
evalu ( df_expr ) ;
Die bedingte Auswahl von Zeilen basierend auf einer Liste kann jedoch mithilfe von For Each Row() effizienter per Skript erfolgen. Das Ergebnis des folgenden Codes sollte mit dem oben genannten identisch sein (mit Ausnahme des Datenfilterfensters).
dt = Offen ( „$ENGLISH_SAMPLE_DATA/Big Class.jmp“ ) ;
A = { „KATIE“ , "HENRY" , "ROBERT" } ;
Für jede Reihe ( Zeilenstatus ( Reihe () ) = Ausgewählter Staat ( Enthält ( A , : Name [] ) ) )
Sobald die doppelten Zeilen ausgewählt sind, führen Sie sie einfach aus dt << Zeilen löschen vor der Verkettung.