

Ich versuche, einen Datenpunkt von einer Datentabelle in eine andere Datentabelle zu ziehen. Oben ist ein Beispiel. Ein einfacher Join scheint mich nicht dahin zu bringen, wohin ich gehen muss. Die Datentabelle auf der linken Seite ist in Wirklichkeit ziemlich groß (800 KB Zeilen). Ich möchte zwischen den beiden Datentabellen basierend auf jar id und seq id übereinstimmen. Erstellen Sie dann eine neue Spalte in der Tabelle auf der linken Seite mit der TOTE-ID und füllen Sie sie mit Daten aus der Tabelle auf der rechten Seite (die viel kleiner als 70.000 Zeilen ist) mit einer erfolgreichen Übereinstimmung. Daher wird jede TOTE-ID aus der Datentabelle auf der rechten Seite wiederholt verwendet, um die Tabelle auf der linken Seite zu füllen. Vielen Dank für Ihre Hilfe.
Was Sie tun möchten, ist ein einfacher Join der Datentabellen.
Tabellen ==> Join
Unten sehen Sie die JSL, die den Join ausführt. Dies kann jedoch problemlos in einem interaktiven Modus erfolgen
names default to here(1);
// Create Sample data tables
dt1 = New Table( "Base",
Add Rows( 10 ),
New Column( "Tube ID",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
),
New Column( "JAR ID",
Character,
"Nominal",
Set Values(
{"XXXY1", "XXXY1", "XXXY2", "XXXY2", "XXXY3", "XXXY3", "XXXY1", "XXXY1",
"XXXY3", "XXXY3"}
),
Set Display Width( 92 )
),
New Column( "SEQ ID",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1001, 1001, 1002, 1002, 1003, 1003, 1001, 1001, 1003, 1003] ),
Set Display Width( 131 )
)
);
dt2 = New Table( "Lookup",
Add Rows( 5 ),
New Column( "JAR ID",
Character,
"Nominal",
Set Values( {"XXXY1", "XXXY2", "XXXY3", "XXXY4", "XXXY5"} ),
Set Display Width( 72 )
),
New Column( "SEQ ID",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1001, 1002, 1003, 1004, 1005] ),
Set Display Width( 80 )
),
New Column( "TOTE ID",
Character,
"Nominal",
Set Values( {"AAA1", "AAA2", "AAA3", "AAA4", "AAA5"} )
)
);
// Join the tables
dtJoin = dt << Join(
With( dt2 ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( :JAR ID = :JAR ID, :SEQ ID = :SEQ ID ),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 0 ),
Preserve main table order( 1 ),
Output Table( "Joined" )
);Sie können auch den Befehl Tabellen> Aktualisieren verwenden.
dt1 << Update(
With( dt2 ),
Match Columns( :JAR ID = :JAR ID, :SEQ ID = :SEQ ID ),
Add Columns from Update table( :TOTE ID )
);