테이블 조인을위한 와일드 카드 처리여러 테이블을 조인해야하지만 조인해야하는 열에 테이블 열 중 하나에 대한 와일드 카드가 있습니다. 테이블이 너무 크지 않으므로 매우 효율적일 필요는 없습니다.
아래의 Table1 KEY 열에는 물음표가있는 단일 영숫자 문자가있을 수 있습니다. 대괄호 안에는 OR 문이 있으므로 1 또는 2 또는 3 또는 4가 될 수 있습니다.
예를 들어 와일드 카드가 일치하므로 Table2의 행 1 & 2에 결합되어야합니다. 그러나 행 3에는 OR 패턴이 1 | 2 | 3 | 4 만있는 9가 있습니다.
물음표가있는 가능한 모든 영숫자 조합과 OR 괄호 안의 각 조합에 대해 행을 복제하려고 생각했습니다. 조인이 작동합니다.
1 번 테이블
| 키 | 데이터 |
| ABC? Y? [1 | 2 | 3 | 4] Z | 99999 |
표 2
| 키 | 날짜 |
| ABC1YA1Z | 2019/08/14 10:10:10 오후 |
| ABCZYB4Z | 2019/08/14 11:11:11 오후 |
| ABC1YA9Z | 2019/08/14 12:12:12 오후 |
결과 테이블 :
| 키 | 날짜 | 데이터 |
| ABC1YA1Z | 2019/08/14 10:10:10 오후 | 99999 |
| ABCZYB4Z | 2019/08/14 11:11:11 오후 | 99999 |
| ABC1YA9Z | 2019/08/14 12:12:12 오후 | . |
Re : 테이블 조인을위한 와일드 카드 처리KEY 형식을 정규식 형식으로 변환 할 수 있습니다.
dt1은 Table1이고 dt2는 Table2입니다.
dt1<<NEW column=""></NEW>
나는 사용하려고 최신 정보 명령하지만 성공적이지 않습니다.
dt2<< update(with(dt1),match columns(regex(:KEY,:KEY_reg ))) //[NOT WORKING]
작업을 수행하는 수동 방법은 다음과 같습니다.
dt1<<NEW column=""></NEW>
감사.
Re : 테이블 조인을위한 와일드 카드 처리Jara95 감사합니다-이것은 솔루션에 매우 가깝습니다. 이 방법을 사용하여 열 행을 참조하는 방법에 대해 잘 모르겠습니다.
dt1[r,"DATA"]
이 방법으로 전환했으며 작동합니다.
dt1:DATA[r]
또한 Regex를 사용하면 OR을 떠날 수 있음을 알았습니다. | 교환 원이 없어도됩니다.
내가 마지막으로 바꾼 것은 For 루프가 N Col에서 N Row로입니다.
최종 스크립트는 다음과 같습니다.
dt1 << New Column( "KEY_reg", character, formula( Substitute( dt1:KEY, "?", "[A-Z0-9]" ) ) );
dt2 << New Column( "DATA" );
For( r = 1, r <= N Row( dt1 ), r++,
r1 = dt2 << Get Rows Where( !Is Missing( Regex( dt2:KEY, dt1:KEY_reg[r] ) ) );
dt2:DATA[r1] = dt1:DATA[r];
);
다시 감사합니다!