

J'essaie d'extraire un point de données d'une table de données vers une autre. Ci-dessus est un exemple. Une simple jointure ne semble pas me mener là où je dois aller. Le tableau de données de gauche est en réalité assez volumineux (800 000 lignes). Je voudrais faire correspondre les deux tables de données en fonction de jar id et seq id. Créez ensuite une nouvelle colonne dans la table de gauche avec l'ID TOTE et complétez-la avec les données de la table de droite (qui est beaucoup plus petite sur 70 000 lignes) avec une correspondance correcte. Ainsi, tout TOTE ID de la table de données à droite sera utilisé de manière répétée pour remplir la table à gauche. Merci pour votre aide.
Ce que vous voulez faire est une simple jointure des tables de données.
Tables ==> Joindre
Ci-dessous, la JSL qui fera la jointure, mais cela peut facilement être fait en mode interactif
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" )
);Vous pouvez également utiliser la commande Tables> Mise à jour.
dt1 << Update(
With( dt2 ),
Match Columns( :JAR ID = :JAR ID, :SEQ ID = :SEQ ID ),
Add Columns from Update table( :TOTE ID )
);