데이터 정리

서로 다른 테이블에서 데이터를 로드할 때 필드 값의 의미가 같더라도 이름이 항상 일관성 있게 지정되는 것은 아니므로 주의해야 합니다. 일관성 결여는 귀찮은 문제일 뿐만 아니라 연결에 방해가 되므로 해결할 필요가 있습니다. 필드 값을 비교하는 매핑 테이블을 만들면 이 문제를 매끄럽게 해결할 수 있습니다.

매핑 테이블

mapping load 또는 mapping select를 통해 로드된 테이블은 일반 테이블과는 다르게 처리됩니다. 이러한 테이블은 별도의 메모리 영역에 저장되며 스크립트 실행 중 매핑 테이블로만 사용됩니다. 스크립트 실행이 완료되면 자동으로 삭제됩니다.

규칙:

  • 매핑 테이블에는 두 개의 열, 즉 비교 값을 포함하는 첫째 열과 원하는 매핑 값을 포함하는 둘째 열이 있어야 합니다.
  • 두 열에는 이름을 지정해야 하지만 이름은 중요하지 않습니다. 열 이름은 일반 내부 테이블의 필드 이름과 연결되지 않습니다.

매핑 테이블 사용

국가 목록이 나열된 여러 테이블을 로드할 때 동일한 한 국가가 다양한 이름으로 나오는 경우를 볼 수 있습니다. 이 예에서 U.S.A.는 US, U.S., United States로 나열됩니다.

컨케트네이트된 테이블에 미국을 의미하는 레코드가 세 가지로 다르게 포함되지 않도록 하려면 그림에 나오는 것과 비슷한 테이블을 만들고 매핑 테이블로 로드합니다.

전체 스크립트는 다음과 같습니다.

CountryMap:

Mapping LOAD x,y from MappingTable.txt

(ansi, txt, delimiter is ',', embedded

labels);

Map Country using CountryMap;

LOAD Country,City from CountryA.txt

(ansi, txt, delimiter is ',', embedded labels);

LOAD Country, City from CountryB.txt

(ansi, txt, delimiter is ',', embedded labels);

mapping 문은 MappingTable.txt 파일을 CountryMap 레이블이 있는 매핑 테이블로 로드합니다.

map 문을 통해 이전에 로드된 매핑 테이블 CountryMap을 사용하여 Country 필드를 매핑할 수 있습니다.

LOAD 문은 CountryACountryB 테이블을 로드합니다. 이 테이블은 동일한 필드 집합이 있기에 컨케트네이트되며, 매핑 테이블의 첫째 열 값과 필드 값을 비교할 Country 필드가 포함되어 있습니다. 필드 값 US, U.S., United States가 발견되고 매핑 테이블의 둘째 열 값인 USA로 대체됩니다.

자동 매핑은 Qlik Sense테이블에 필드가 저장되기 전 일련의 이벤트에서 마지막으로 수행됩니다. 일반적인 LOAD 또는 SELECT 문의 이벤트 순서를 대략적으로 정리하면 다음과 같습니다.

  1. 표현식 평가
  2. as로 필드의 이름 바꾸기
  3. alias로 필드의 이름 바꾸기
  4. 테이블 이름 한정(해당하는 경우)
  5. 필드 이름이 일치하는 경우 데이터 매핑

즉, 매핑은 표현식 실행 도중 필드 이름이 발견될 때마다 수행되는 것이 아니라 Qlik Sense 테이블의 필드 이름으로 값이 저장될 때 수행됩니다.

매핑을 비활성화하려면 unmap 문을 사용합니다.

표현식 수준에서 매핑을 수행하려면 applymap 함수를 사용합니다.

부분 문자열 수준에서 매핑을 수행하려면 mapsubstring 함수를 사용합니다.