조인에 대한 대안으로 매핑 사용
Qlik Sense에서 Join 접두사는 데이터 모델에서 여러 데이터 테이블을 결합하는 강력한 방법입니다.
한 가지 단점은 결합된 테이블이 커지고 성능 문제를 일으킬 수 있다는 점입니다. 다른 테이블의 단일 값을 조회해야 하는 경우 Join에 대한 대안은 매핑을 사용하는 것입니다. 이렇게 하면 조인에 의해 테이블의 레코드 수가 변경되어 불필요한 데이터가 로드되고 계산 속도가 느려지고 계산 오류가 발생할 가능성을 방지할 수 있습니다.
매핑 테이블은 두 개의 열로 구성되는데, 비교 필드(입력)와 매핑 값 필드(출력)입니다.
이 예에서는 주문 테이블(Orders) 하나가 있으며 고객의 국가를 알아야 하는데, 이 정보는 고객 테이블(Customers)에 저장되어 있습니다.
OrderID | OrderDate | ShipperID | Freight | CustomerID |
---|---|---|---|---|
12987 | 2007-12-01 | 1 | 27 | 3 |
12988 | 2007-12-01 | 1 | 65 | 4 |
12989 | 2007-12-02 | 2 | 32 | 2 |
12990 | 2007-12-03 | 1 | 76 | 3 |
CustomerID | Name | Country | ... |
---|---|---|---|
1 | DataSales | Spain | ... |
2 | BusinessCorp | Italy | ... |
3 | TechCo | Germany | ... |
4 | Mobecho | France | ... |
고객의 국가(Country)를 조회하기 위해서는 다음과 같은 매핑 테이블이 필요합니다.
CustomerID | Country |
---|---|
1 | Spain |
2 | Italy |
3 | Germany |
4 | France |
MapCustomerIDtoCountry라는 이름의 매핑 테이블이 다음과 같이 스크립트에 정의되어 있습니다.
MapCustomerIDtoCountry:
Mapping LOAD CustomerID, Country From Customers ;
다음 단계는 주문 테이블을 로드할 때 ApplyMap 함수를 사용하여 매핑을 적용하는 것입니다.
Orders:
LOAD *,
ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country
From Orders ;
ApplyMap 함수의 세 번째 파라메타는 매핑 테이블에서 값을 발견하지 못했을 때 반환할 값(이 경우는 Null())을 정의하는 데 사용됩니다.
결과 테이블은 다음과 같이 표시됩니다.
OrderID | OrderDate | ShipperID | Freight | CustomerID | Country |
---|---|---|---|---|---|
12987 | 2007-12-01 | 1 | 27 | 3 | Germany |
12988 | 2007-12-01 | 1 | 65 | 4 | France |
12989 | 2007-12-02 | 2 | 32 | 2 | Italy |
12990 | 2007-12-03 | 1 | 76 | 3 | Germany |