Rank - 차트 함수
Rank()는 표현식의 차트 행을 평가하고 각 행에 대해 표현식에서 평가된 차원 값의 상대적 위치를 표시합니다. 이 함수는 표현식을 평가할 때 결과를 현재 열 세그먼트가 포함된 다른 행의 결과와 비교한 다음 세그먼트 내 현재 행의 순위를 반환합니다.
테이블 이외의 차트에서는 현재 열 세그먼트가 차트의 일반표 해당 부분에 나타나는 대로 정의됩니다.
구문:
Rank([TOTAL expr[, mode[, fmt]])
반환 데이터 유형: dual
인수:
- expr: 측정할 데이터가 포함된 표현식 또는 필드입니다.
- mode: 함수 결과의 숫자 표현을 지정합니다.
- fmt: 함수 결과의 텍스트 표현을 지정합니다.
- TOTAL: 차트가 1차원이거나 표현식 앞에 TOTAL 한정자가 오는 경우 이 함수는 전체 열에서 평가됩니다. 테이블 또는 테이블과 동등한 것에 여러 세로 차원이 있을 경우 현재 열 세그먼트에는 필드 간 정렬 순서에서 마지막 차원이 표시되는 열을 제외하고 모든 차원 열 내의 현재 행과 같은 값을 가진 행만 포함됩니다.
순위는 이중 값으로 반환되며, 각 행은 1과 현재 열 세그먼트의 행 수 사이의 정수인 고유 순위를 갖습니다.
여러 행이 동일한 순위를 공유할 경우 mode 및 fmt 파라메타를 사용하여 텍스트 및 숫자 표현을 제어할 수 있습니다.
mode
두 번째 인수인 mode에는 다음 값을 적용할 수 있습니다.
값 | 설명 |
---|---|
0(기본값) |
공유 그룹 내의 모든 순위가 전체 순위의 중간 값에서 낮은 쪽에 속할 경우 공유 그룹 내의 모든 행에 최저 순위가 부여됩니다. 공유 그룹 내의 모든 순위가 전체 순위의 중간 값에서 높은 쪽에 속할 경우 공유 그룹 내의 모든 행에 최고 순위가 부여됩니다. 공유 그룹 내의 순위가 전체 순위의 중간 값에 분포할 경우 모든 행에 전체 열 세그먼트의 최고 및 최저 순위의 평균에 해당하는 값이 부여됩니다. |
1 | 모든 행에 최저 순위를 부여합니다. |
2 | 모든 행에 평균 순위를 부여합니다. |
3 | 모든 행에 최고 순위를 부여합니다. |
4 | 첫 번째 행에 최저 순위를 부여하고, 각 행마다 순위가 하나씩 올라갑니다. |
fmt
세 번째 인수인 fmt에는 다음 값을 적용할 수 있습니다.
값 | 설명 |
---|---|
0(기본값) | 모든 행에 낮은 값 - 높은 값을 부여합니다(예: 3 - 4). |
1 | 모든 행에 낮은 값을 부여합니다. |
2 | 첫 번째 행에 낮은 값을 부여하고 나머지 행은 공백으로 채웁니다. |
mode 4 및 fmt 2에 해당하는 행의 순서는 차트 차원의 정렬 순서에 따라 결정됩니다.
예 및 결과:
차원 Product 및 Sales에서 두 차트를 만들고, Product 및 UnitSales에서 또 다른 차트를 만듭니다. 아래 테이블에 표시된 것처럼 계수를 추가합니다.
예 1:
차원 Customer및 Sales와 계수 Rank(Sales)에서 테이블을 만듭니다.
결과는 차원의 정렬 순서에 따라 달라집니다. 테이블이 Customer로 정렬된 경우, 테이블에 Astrida에 대한 Sales 값에 이어 Betacab 순으로 해당하는 모든 값이 나열됩니다. Rank(Sales)의 결과는 Sales 값 12에 대해 10, Sales 값 13에 대해 9 등으로 표시되며, Sales 값 78의 경우 순위 값 1이 반환됩니다. 다음 열 세그먼트는 Betacab으로 시작되며, 여기서 세그먼트에 있는 Sales의 첫 번째 값은 12입니다. 이에 대한 Rank(Sales)의 순위 값은 11로 지정됩니다.
테이블이 Sales로 정렬된 경우, 열 세그먼트는 Sales 및 해당 Customer의 값으로 구성됩니다. 12에 해당하는 Sales 값이 두 개(Astrida 및 Betacab)이므로, 해당 열 세그먼트의 Rank(Sales) 값은 각 Customer에 대해 1-2입니다. 이는 Sales 값 12에 해당하는 Customer의 값이 둘이기 때문입니다. 4개의 값이 있다면 결과는 모든 행에서 1-4가 됩니다. 이는 인수 fmt의 기본값(0)에 대한 결과가 어떻게 나타날지 보여줍니다.
예 2:
Customer 차원을 Product로 교체하고 계수 Rank(Sales,1,2)를 추가합니다.
그러면 인수 mode 및 fmt가 각각 1과 2로 설정되므로, 각 열 세그먼트의 첫 번째 행에서 1이 반환되며 나머지 모든 행은 빈 채로 남습니다.
예에서 사용된 데이터:
ProductData:
Load * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD|0|25
Canutility|AA|8|15
Canutility|CC|0|19
] (delimiter is '|');
Sales2013:
crosstable (Month, Sales) LOAD * inline [
Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
Astrida|46|60|70|13|78|20|45|65|78|12|78|22
Betacab|65|56|22|79|12|56|45|24|32|78|55|15
Canutility|77|68|34|91|24|68|57|36|44|90|67|27
Divadip|57|36|44|90|67|27|57|68|47|90|80|94
] (delimiter is '|');