Crosstable
crosstable 로드 접두사는 "교차 표" 또는 "피벗 테이블" 구조화된 데이터를 바꾸는 데 사용됩니다. 이러한 방식으로 구조화된 데이터는 스프레드시트 소스로 작업할 때 일반적으로 발생합니다. crosstable 로드 접두사의 출력 및 목표는 이러한 구조를 일반 열 지향 테이블에 해당하는 것으로 바꾸는 것입니다. 이 구조는 일반적으로 Qlik Sense의 분석에 더 적합하기 때문입니다.
구문:
crosstable (attribute field name, data field name [ , n ] ) ( loadstatement | selectstatement )
인수 | 설명 |
---|---|
attribute field name | 바꿀 수평 방향 차원을 설명하는 원하는 출력 필드 이름(머리글 행). |
data field name |
바꿀 차원의 수평 방향 데이터를 설명하는 원하는 출력 필드 이름(머리글 행 아래의 데이터 값 행렬). |
n |
일반 형식으로 변환할 테이블 앞에 있는 한정자 필드 또는 변경되지 않은 차원의 수. 기본값은 1입니다. |
이 스크립팅 함수는 다음 함수와 관련이 있습니다.
함수 | 상호 작용 |
---|---|
Generic | 엔터티-특성-값으로 구조화된 데이터 집합을 가져와 이를 일반 관계형 테이블 구조로 변환하는 변환 로드 접두사이며, 발생한 각 특성을 데이터의 새 필드 또는 열로 분리합니다. |
예 1 – 피벗된 판매 데이터 변환(단순)
개요
데이터 로드 편집기를 열고 아래의 첫 번째 로드 스크립트를 새 탭에 추가합니다.
첫 번째 로드 스크립트에는 나중에 crosstable 스크립트 접두사가 적용될 데이터 집합이 포함되어 있으며, 이 스크립트에는 crosstable을 적용하는 섹션이 주석 처리되어 있습니다. 즉, 로드 스크립트에서 이 섹션을 비활성화하기 위해 주석 구문이 사용되었습니다.
두 번째 로드 스크립트는 첫 번째 로드 스크립트와 동일하지만 주석 처리가 제거된 crosstable의 응용 프로그램을 사용합니다(주석 구문을 제거하여 활성화됨). 이러한 스크립트는 데이터 변환에서 이 스크립팅 함수의 값을 강조하기 위해 이러한 방식으로 표시됩니다.
첫 번째 로드 스크립트(함수가 적용되지 않음)
tmpData:
//Crosstable (MonthText, Sales)
Load * inline [
Product, Jan 2021, Feb 2021, Mar 2021, Apr 2021, May 2021, Jun 2021
A, 100, 98, 103, 63, 108, 82
B, 284, 279, 297, 305, 294, 292
C, 50, 53, 50, 54, 49, 51];
//Final:
//Load Product,
//Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
//Sales
//Resident tmpData;
//Drop Table tmpData;
인라인 로드 사용에 대한 자세한 내용은 인라인 로드를 참조하십시오.
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
Product
-
Jan 2021
-
Feb 2021
-
Mar 2021
-
Apr 2021
-
May 2021
-
Jun 2021
Product | Jan 2021 | Feb 2021 | Mar 2021 | Apr 2021 | May 2021 | Jun 2021 |
---|---|---|---|---|---|---|
A | 100 | 98 | 103 | 63 | 108 | 82 |
B | 284 | 279 | 297 | 305 | 294 | 292 |
C | 50 | 53 | 50 | 54 | 49 | 51 |
이 스크립트를 사용하면 각 월에 대한 하나의 열과 제품당 하나의 행이 있는 교차 표를 만들 수 있습니다. 현재 형식으로는 이 데이터를 분석하기가 쉽지 않습니다. 한 필드에 모든 숫자가 있고 다른 필드(즉, 3개 열이 있는 테이블)에 모든 월이 있는 것이 훨씬 좋습니다. 다음 섹션에서는 교차 표로 이 변환을 수행하는 방법을 설명합니다.
두 번째 로드 스크립트(함수가 적용됨)
//를 제거하여 스크립트의 주석 처리를 제거합니다. 이 로드 스크립트는 다음과 같이 표시되어야 합니다.
tmpData:
Crosstable (MonthText, Sales)
Load * inline [
Product, Jan 2021, Feb 2021, Mar 2021, Apr 2021, May 2021, Jun 2021
A, 100, 98, 103, 63, 108, 82
B, 284, 279, 297, 305, 294, 292
C, 50, 53, 50, 54, 49, 51];
Final:
Load Product,
Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
Sales
Resident tmpData;
Drop Table tmpData;
인라인 로드 사용에 대한 자세한 내용은 인라인 로드를 참조하십시오.
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
Product
-
Month
-
Sales
Product | Month | Sales |
---|---|---|
A | Jan 2021 | 100 |
A | Feb 2021 | 98 |
A | Mar 2021 | 103 |
A | Apr 2021 | 63 |
A | May 2021 | 108 |
A | Jun 2021 | 82 |
B | Jan 2021 | 284 |
B | Feb 2021 | 279 |
B | Mar 2021 | 297 |
B | Apr 2021 | 305 |
B | May 2021 | 294 |
B | Jun 2021 | 292 |
C | Jan 2021 | 50 |
C | Feb 2021 | 53 |
C | Mar 2021 | 50 |
C | Apr 2021 | 54 |
C | May 2021 | 49 |
C | Jun 2021 | 51 |
스크립트 접두사가 적용되면 교차 표는 Month에 대한 열과 Sales에 대한 열이 별도로 있는 일반표로 변환됩니다. 이렇게 하면 데이터의 가독성이 향상됩니다.
예 2 - 피벗된 판매 목표 데이터를 수직 테이블 구조로 변환(중간)
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Targets라는 테이블에 로드되는 데이터 집합.
-
피벗된 판매 사원 이름을 Sales Person으로 레이블이 지정된 자체 필드로 바꾸는 crosstable 로드 접두사.
-
Target이라는 필드로 구조화되는 관련 판매 목표 데이터.
로드 스크립트
SalesTargets:
CROSSTABLE([Sales Person],Target,1)
LOAD
*
INLINE [
Area, Lisa, James, Sharon
APAC, 1500, 1750, 1850
EMEA, 1350, 950, 2050
NA, 1800, 1200, 1350
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
Area
-
Sales Person
이 측정값을 추가합니다.
=Sum(Target)
Area | Sales Person | =Sum(Target) |
---|---|---|
APAC | James | 1750 |
APAC | Lisa | 1500 |
APAC |
Sharon | 1850 |
EMEA | James | 950 |
EMEA | Lisa | 1350 |
EMEA | Sharon | 2050 |
NA | James | 1200 |
NA | Lisa | 1800 |
NA | Sharon | 1350 |
데이터 표시를 피벗된 입력 테이블로 복제하려는 경우 시트에 동등한 피벗 테이블을 만들 수 있습니다.
다음과 같이 하십시오.
- 방금 만든 테이블을 복사하여 시트에 붙여넣습니다.
- 새로 만든 테이블 복사본 위로 피벗 테이블 차트 개체를 끕니다. 변환을 선택합니다.
- 편집 완료를 클릭합니다.
- 세로 열 선반에서 가로 열 선반으로 Sales Person 필드를 끕니다.
다음 테이블은 Qlik Sense에 표시되는 초기 테이블 형식의 데이터를 보여 줍니다.
Area | Sales Person | =Sum(Target) |
---|---|---|
Totals | - | 13800 |
APAC | James | 1750 |
APAC | Lisa | 1500 |
APAC |
Sharon | 1850 |
EMEA | James | 950 |
EMEA | Lisa | 1350 |
EMEA | Sharon | 2050 |
NA | James | 1200 |
NA | Lisa | 1800 |
NA | Sharon | 1350 |
동등한 피벗 테이블은 다음과 유사하며, 이 테이블에는 각 판매 사원의 이름에 대한 열이 Sales Person에 대한 더 큰 행에 포함되어 있습니다.
Area | James | Lisa | Sharon |
---|---|---|---|
APAC | 1750 | 1500 | 1850 |
EMEA | 950 | 1350 | 2050 |
NA | 1350 | 1350 | 1350 |
예 3 – 피벗된 판매 및 목표 데이터를 세로 테이블 구조로 변환(고급)
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
지역 및 월별로 구성된 판매 및 목표 데이터를 나타내는 데이터 집합. 이는 SalesAndTargets라는 테이블에 로드됩니다.
-
crosstable 로드 접두사. 이는 Month Year 차원을 전용 필드로 피벗 해제하고 판매 및 목표 금액 행렬을 Amount라는 전용 필드로 바꾸는 데 사용됩니다.
-
텍스트에서 날짜로의 변환 함수 date#를 사용하여 텍스트에서 적절한 날짜로 Month Year 필드 변환. 날짜로 변환된 이 Month Year 필드는 Join 로드 접두사를 통해 SalesAndTarget 테이블에 다시 조인됩니다.
로드 스크립트
SalesAndTargets:
CROSSTABLE(MonthYearAsText,Amount,2)
LOAD
*
INLINE [
Area Type Jan-22 Feb-22 Mar-22 Apr-22 May-22 Jun-22 Jul-22 Aug-22 Sep-22 Oct-22 Nov-22 Dec-22
APAC Target 425 425 425 425 425 425 425 425 425 425 425 425
APAC Actual 435 434 397 404 458 447 413 458 385 421 448 397
EMEA Target 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5
EMEA Actual 363.5 359.5 337.5 361.5 341.5 337.5 379.5 352.5 327.5 337.5 360.5 334.5
NA Target 375 375 375 375 375 375 375 375 375 375 375 375
NA Actual 378 415 363 356 403 343 401 365 393 340 360 405
] (delimiter is '\t');
tmp:
LOAD DISTINCT MonthYearAsText,date#(MonthYearAsText,'MMM-YY') AS [Month Year]
RESIDENT SalesAndTargets;
JOIN (SalesAndTargets)
LOAD * RESIDENT tmp;
DROP TABLE tmp;
DROP FIELD MonthYearAsText;
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
Area
-
Month Year
레이블 Actual을 사용하여 다음 측정값을 만듭니다.
=Sum({<Type={'Actual'}>} Amount)
또한 레이블 Target을 사용하여 이 측정값을 만듭니다.
=Sum({<Type={'Target'}>} Amount)
Area | Month Year | Actual | Target |
---|---|---|---|
APAC | Jan-22 | 435 | 425 |
APAC | Feb-22 | 434 | 425 |
APAC |
Mar-22 | 397 | 425 |
APAC | Apr-22 | 404 | 425 |
APAC | May-22 | 458 | 425 |
APAC | Jun-22 | 447 | 425 |
APAC | Jul-22 | 413 | 425 |
APAC | Aug-22 | 458 | 425 |
APAC | Sep-22 | 385 | 425 |
APAC | Oct-22 | 421 | 425 |
APAC | Nov-22 | 448 | 425 |
APAC | Dec-22 | 397 | 425 |
EMEA | Jan-22 | 363.5 | 362.5 |
EMEA | Feb-22 | 359.5 | 362.5 |
데이터 표시를 피벗된 입력 테이블로 복제하려는 경우 시트에 동등한 피벗 테이블을 만들 수 있습니다.
다음과 같이 하십시오.
- 방금 만든 테이블을 복사하여 시트에 붙여넣습니다.
- 새로 만든 테이블 복사본 위로 피벗 테이블 차트 개체를 끕니다. 변환을 선택합니다.
- 편집 완료를 클릭합니다.
- 세로 열 선반에서 가로 열 선반으로 Month Year 필드를 끕니다.
- 가로 열 선반에서 세로 열 선반으로 Values 항목을 끕니다.
다음 테이블은 Qlik Sense에 표시되는 초기 테이블 형식의 데이터를 보여 줍니다.
Area | Month Year | Actual | Target |
---|---|---|---|
Totals | - | 13812 | 13950 |
APAC | Jan-22 | 435 | 425 |
APAC | Feb-22 | 434 | 425 |
APAC |
Mar-22 | 397 | 425 |
APAC | Apr-22 | 404 | 425 |
APAC | May-22 | 458 | 425 |
APAC | Jun-22 | 447 | 425 |
APAC | Jul-22 | 413 | 425 |
APAC | Aug-22 | 458 | 425 |
APAC | Sep-22 | 385 | 425 |
APAC | Oct-22 | 421 | 425 |
APAC | Nov-22 | 448 | 425 |
APAC | Dec-22 | 397 | 425 |
EMEA | Jan-22 | 363.5 | 362.5 |
EMEA | Feb-22 | 359.5 | 362.5 |
동등한 피벗 테이블은 다음과 유사하며, 연도의 각 월에 대한 열이 Month Year에 대한 더 큰 행에 포함되어 있습니다.
Area (Values) | Jan-22 | Feb-22 | Mar-22 | Apr-22 | May-22 | Jun-22 | Jul-22 | Aug-22 | Sep-22 | Oct-22 | Nov-22 | Dec-22 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
APAC - Actual | 435 | 434 | 397 | 404 | 458 | 447 | 413 | 458 | 385 | 421 | 448 | 397 |
APAC - Target | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 |
EMEA - Actual | 363.5 | 359.5 | 337.5 | 361.5 | 341.5 | 337.5 | 379.5 | 352.5 | 327.5 | 337.5 | 360.5 | 334.5 |
EMEA - Target | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 |
NA - Actual | 378 | 415 | 363 | 356 | 403 | 343 | 401 | 365 | 393 | 340 | 360 | 405 |
NA - Target | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 |