

하나의 데이터 테이블에서 다른 데이터 테이블로 데이터 포인트를 가져 오려고합니다. 위 예가 그 예입니다. 간단한 가입은 내가 가야 할 곳으로 나를 데려 오지 않는 것 같습니다. 실제로 왼쪽의 데이터 테이블은 상당히 큽니다 (800K 행). jar id와 seq id를 기반으로 두 데이터 테이블을 일치시키고 싶습니다. 그런 다음 TOTE ID가있는 왼쪽에있는 테이블에 새 열을 만들고 오른쪽에있는 표 (훨씬 작은 70k 행)의 데이터와 함께 성공적으로 일치하는 열을 채 웁니다. 따라서 오른쪽에있는 데이터 테이블의 주어진 TOTE ID는 반복적으로 왼쪽에 테이블을 채우는 데 사용됩니다. 도와 주셔서 감사합니다.
당신이 원하는 것은 데이터 테이블을 단순하게 결합하는 것입니다.
테이블 ==> 가입
아래는 join을 할 JSL이지만 대화식 모드에서 쉽게 할 수 있습니다.
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" )
);테이블> 업데이트 명령을 사용할 수도 있습니다.
dt1 << Update(
With( dt2 ),
Match Columns( :JAR ID = :JAR ID, :SEQ ID = :SEQ ID ),
Add Columns from Update table( :TOTE ID )
);