안녕하세요 여러분!
아래와 같이 타임스탬프 열과 다양한 데이터 열이 포함된 데이터 테이블 1이 있는 문제가 있습니다.
| 타임스탬프 | A열 | B열 |
| 2021년 2월 8일 오전 11:45 | A1 | 지하 1층 |
| 2021/02/08 오후 1:39 | A2 | 지하 2층 |
| 2021년 2월 8일 오후 11:37 | A3 | B3 |
| 2021년 2월 13일 오전 12:01 | A4 | B4 |
| 2021년 2월 13일 오후 4시 | A5 | B5 |
| 2021년 2월 13일 오후 10:22 | A6 | B6 |
| 2021년 2월 18일 오전 9시 | A7 | B7 |
| 2021년 2월 18일 오후 12:01 | A8 | B8 |
| 2021년 2월 21일 오전 9:15 | A9 | B9 |
| 2021년 2월 21일 오전 11:50 | A10 | B10 |
| 2021년 2월 21일 오후 3시 | A11 | B11 |
그리고 타임스탬프 열과 해당 데이터 열이 포함된 데이터 테이블 2
| 타임스탬프 | C열 | D열 |
| 2021년 2월 8일 오전 11:24 | C1 | D1 |
| 2021년 2월 13일 오전 12:07 | C2 | D2 |
| 2021년 2월 18일 오전 10:29 | C3 | D3 |
| 2021년 2월 21일 오전 11:16 | C4 | D4 |
데이터 테이블 1의 타임스탬프 열을 유지한 상태에서 이 두 데이터 테이블을 함께 결합하고 싶지만, 데이터 테이블 2의 C 열과 D 열을 데이터 테이블 1에 결합하면 데이터의 타임스탬프에 표시된 시간부터 데이터가 적용됩니다. 표 2.결과 열은 다음과 같습니다.
| 타임스탬프 | A열 | B열 | C열 | D열 |
| 2021년 2월 8일 오전 11:45 | A1 | 지하 1층 | C1 | D1 |
| 2021/02/08 오후 1:39 | A2 | 지하 2층 | C1 | D1 |
| 2021년 2월 8일 오후 11:37 | A3 | B3 | C1 | D1 |
| 2021년 2월 13일 오전 12:01 | A4 | B4 | C1 | D1 |
| 2021년 2월 13일 오후 4시 | A5 | B5 | C2 | D2 |
| 2021년 2월 13일 오후 10:22 | A6 | B6 | C2 | D2 |
| 2021년 2월 18일 오전 9시 | A7 | B7 | C2 | D2 |
| 2021년 2월 18일 오후 12:01 | A8 | B8 | C3 | D3 |
| 2021년 2월 21일 오전 9:15 | A9 | B9 | C3 | D3 |
| 2021년 2월 21일 오전 11:50 | A10 | B10 | C4 | D4 |
| 2021년 2월 21일 오후 3시 | A11 | B11 | C4 | D4 |
도움을 주셔서 미리 감사드립니다!
물론 당신 말이 맞아요 @txnelson . 너무 빨리 봤네요. 원래 답변을 편집했습니다.
@Dan_Obermiller
날짜를 기준으로 행 중 2개가 일치하지 않습니다.표시된 테이블 일치는 목표 날짜에 가장 가까운 이전 날짜를 기반으로 하는 것으로 보입니다.
귀하의 작은 예에서는 시간이 아닌 날짜를 기준으로 일치하는 것처럼 보입니다. 대신에 그게 효과가 있을까요?
편집: 이 설명은 무시해도 됩니다. 나는 그 예를 너무 빨리 살펴보았다.
다음은 귀하의 예에서 일치하는 항목을 복제하는 스크립트입니다.

스크립트의 실제 작업 부분은 20줄 미만입니다.완전성을 위해 스크립트 시작 부분에 원본 예제 데이터 테이블을 생성하는 JSL을 포함시켰습니다.이를 통해 스크립트를 잘라내어 붙여넣기만 하면 오류 없이 실행됩니다.
Names Default To Here( 1 );
dt = New Table( "Base",
Add Rows( 11 ),
New Column( "Timestamp",
Numeric,
"Continuous",
Format( "m/d/y h:m", 19 ),
Input Format( "m/d/y h:m" ),
Set Values(
[3695629500, 3695636340, 3695672220, 3696019260, 3696076800, 3696099720, 3696483600, 3696494460, 3696743700,
3696753000, 3696764400]
)
),
New Column( "Column A",
Character( 16 ),
"Nominal",
Set Values( {"A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11"} )
),
New Column( "Column B",
Character( 16 ),
"Nominal",
Set Values( {"B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11"} )
)
);
dt2 = New Table( "Match",
Add Rows( 4 ),
New Column( "Timestamp",
Numeric,
"Continuous",
Format( "m/d/y h:m", 19 ),
Input Format( "m/d/y h:m" ),
Set Values( [3695628240, 3696019620, 3696488940, 3696750960] )
),
New Column( "Column C", Character( 16 ), "Nominal", Set Values( {"C1", "C2", "C3", "C4"} ) ),
New Column( "Column D", Character( 16 ), "Nominal", Set Values( {"D1", "D2", "D3", "D4"} ) )
);
// Here is the actual matching code
dt << New Column("TheRow");
dt2 << New Column("TheRow", formula(Row()));
// Find the row in the Match data table that is to be paired with the row
// in the Base data table
For( i = 1, i <= N Rows( dt ), i++,
dt:theRow[i] = Max( dt2 << get rows where( dt2:timestamp <= dt:Timestamp[i] ) )
);
// Update data tables
Data Table( "Base" ) << Update(
With( Data Table( "Match" ) ),
Match Columns( :TheRow = :TheRow )
);
// Delete column: TheRow
Data Table( "Base" ) << Delete Columns( :TheRow );
// Delete column: TheRow
Data Table( "Match" ) << Delete Columns( :TheRow );