LookUp - 스크립트 함수
Lookup()은 이미 로드된 테이블을 조회하여 match_field_name 필드의 match_field_value 값의 첫 번째 발생 항목에 해당하는 field_name의 값을 반환합니다. 테이블은 현재 테이블이거나 이전에 로드한 다른 테이블일 수 있습니다.
구문:
lookup(field_name,
match_field_name, match_field_value [, table_name])
반환 데이터 유형: dual
인수:
인수
field_name |
반환 값이 필요한 필드의 이름입니다. 입력 값은 문자열(예: 따옴표로 묶은 리터럴)로 지정해야 합니다. |
match_field_name |
match_field_value를 조회할 필드의 이름입니다. 입력 값은 문자열(예: 따옴표로 묶은 리터럴)로 지정해야 합니다. |
match_field_value |
match_field_name 필드에서 조회할 값입니다. |
table_name |
값을 조회할 테이블의 이름입니다. 입력 값은 문자열(예: 따옴표로 묶은 리터럴)로 지정해야 합니다.
table_name을 생략하면 현재 테이블이 사용됩니다.
|
정보 메모따옴표가 없는 인수는 현재 테이블을 참조합니다. 다른 테이블을 참조하려면 작은따옴표 안에 해당 인수를 넣으십시오.
제한 사항:
테이블이 조인과 같은 복잡한 연산의 결과일 경우 순서가 잘 정의되지 않으며, 그렇지 않을 경우 로드 순서가 검색 순서가 됩니다. field_name 및 match_field_name은 table_name으로 지정된 테이블과 동일한 테이블 내의 필드여야 합니다.
일치 항목이 발견되지 않으면 NULL이 반환됩니다.
로드 스크립트
데이터 로드 편집기에서 다음 데이터를 인라인 로드로 로드하여 아래 예를 만듭니다.
ProductList:
Load * Inline [
ProductID|Product|Category|Price
1|AA|1|1
2|BB|1|3
3|CC|2|8
4|DD|3|2
] (delimiter is '|');
OrderData:
Load *, Lookup('Category', 'ProductID', ProductID, 'ProductList') as CategoryID
Inline [
InvoiceID|CustomerID|ProductID|Units
1|Astrida|1|8
1|Astrida|2|6
2|Betacab|3|10
3|Divadip|3|5
4|Divadip|4|10
] (delimiter is '|');
Drop Table ProductList;
인라인 로드 사용에 대한 자세한 내용은 인라인 로드를 참조하십시오.
시각화 만들기
Qlik Sense 시트에 테이블 시각화를 만듭니다. 테이블에 ProductID, InvoiceID, CustomerID, Units 및 CategoryID 필드를 추가합니다.
결과
결과 테이블
ProductID |
InvoiceID |
CustomerID |
단위 |
CategoryID |
1 |
1 |
Astrida |
8 |
1 |
2 | 1 | Astrida | 6 | 1 |
3 | 2 | Betacab | 10 | 2 |
3 | 3 | Divadip | 5 | 2 |
4 | 4 | Divadip | 10 | 3 |
설명
샘플 데이터에서는 다음과 같은 형식으로 Lookup() 함수를 사용합니다.
Lookup('Category', 'ProductID', ProductID, 'ProductList')
ProductList 테이블이 먼저 로드됩니다.
Lookup() 함수는 OrderData 테이블을 만드는 데 사용됩니다. 세 번째 인수가 ProductID로 지정됩니다. 둘러싼 작은따옴표에 지정된 대로 ProductList의 두 번째 인수 'ProductID'에서 값을 조회할 필드입니다.
이 함수는 CategoryID로 로드된 'Category'(ProductList 테이블 내)의 값을 반환합니다.
drop 문은 불필요한 ProductList 테이블을 데이터 모델에서 삭제하며 결과 OrderData 테이블은 남겨둡니다.
정보 메모
Lookup() 함수는 유연하므로 이전에 로드한 테이블에 액세스할 수 있습니다. 하지만 Applymap() 함수와 비교하여 속도가 느립니다.