Above
Above() 는 테이블의 열 세그먼트 내의 현재 행 위에 있는 행의 표현식을 평가합니다. 계산되는 행은 offset(있는 경우) 값에 따라 달라지며 기본적으로는 바로 위에 있는 행입니다. 테이블 이외의 차트인 경우, Above()는 해당 차트의 일반표 해당 부분의 현재 행 위에 있는 행을 평가합니다.
구문:
Above([TOTAL] expr [ , offset [,count]])
반환 데이터 유형: dual
인수:
- expr: 측정할 데이터가 포함된 표현식 또는 필드입니다.
- offset: offsetn을 0보다 크게 지정하면 표현식의 평가가 현재 행보다 n 행 위로 이동됩니다. 오프셋을 0으로 지정하면 현재 행의 표현식이 평가됩니다. 오프셋을 음수로 지정하면 Above 함수가 상응하는 양수 오프셋이 있는 Below 함수와 동일하게 작동합니다.
- count: 세 번째 인수 count를 1보다 크게 지정하면 함수에서 count 값의 범위를 반환하며, 원래 셀에서 위쪽으로 계산하여 count 테이블 행 각각에 대해 하나의 값이 반환됩니다. 이러한 형식으로 이 함수를 특별 범위 함수의 인수로 활용할 수 있습니다. 범위 함수
- TOTAL: 테이블이 1차원이거나 TOTAL 한정자를 인수로 사용하는 경우 현재 열 세그먼트는 항상 전체 열과 동등합니다.
열 세그먼트의 첫 번째 행은 위에 다른 행이 없으므로 NULL 값이 반환됩니다.
제한 사항:
-
재귀 호출은 NULL을 반환합니다.
-
이 차트 함수가 차트의 표현식에서 사용되는 경우 차트의 y 값에 대한 정렬 또는 테이블의 표현식 열에 의한 정렬은 허용되지 않습니다. 따라서 해당 정렬 옵션이 자동으로 비활성화됩니다. 시각화 또는 테이블에서 이 차트 함수를 사용하면 시각화의 정렬이 이 함수에 대해 정렬된 입력으로 되돌아갑니다.
예 및 결과:
예 1:
Customer | Sum(Sales) | Above(Sum(Sales)) | Sum(Sales) + Above(Sum(Sales)) | Above offset 3 | Higher? |
---|---|---|---|---|---|
- | 2566 | - | - | - | - |
Astrida | 587 | - | - | - | - |
Betacab | 539 | 587 | 1126 | - | - |
Canutility | 683 | 539 | 1222 | - | Higher |
Divadip | 757 | 683 | 1440 | 1344 | Higher |
이 예에서 보여주는 테이블 차트 표시에서, 테이블은 차원 Customer와 측정값 Sum(Sales) 및 Above(Sum(Sales))로부터 생성됩니다.
열 Above(Sum(Sales))는 위에 다른 행이 없으므로 Astrida가 포함된 Customer 행에 대해 NULL을 반환합니다. Betacab 행의 결과는 Astrida에 대한 Sum(Sales)의 값을 보여주며, Canutility의 결과는 Betacab에 대한 Sum(Sales)의 값을 보여줍니다.
레이블이 Sum(Sales)+Above(Sum(Sales))인 열의 경우, Betacab의 행에 Betacab + Astrida(539+587)행의 Sum(Sales) 덧셈 결과가 표시됩니다. Canutility 행의 결과는 Canutility + Betacab(683+539)의 Sum(Sales) 값의 덧셈 결과가 표시됩니다.
표현식 Sum(Sales)+Above(Sum(Sales), 3)를 사용하여 생성된 레이블이 Above offset 3인 계수에는 인수 offset이 3으로 설정되어 있으며, 현재 행의 세 번째 위 행에 있는 값을 취하는 결과를 갖습니다. 이는 현재 Customer의 Sum(Sales) 값을 세 행 위의 Customer 값에 추가합니다. 처음 세 Customer 행에서 반환되는 값은 Null입니다.
아래 테이블은 더 복잡한 계수를 보여줍니다. 하나는 Sum(Sales)+Above(Sum(Sales))에서 생성된 것이며, 하나는 레이블이 Higher?이고 IF(Sum(Sales)>Above(Sum(Sales)), 'Higher')에서 생성된 것입니다.
예 2:
이 예에 나온 테이블 차트 표시에는 다음 차트에 더 많은 차원이 추가되었습니다. Month 및 Product. 2차원 이상의 차트인 경우 Above, Below, Top 및 Bottom 함수가 포함된 표현식의 결과는 QlikView에서 열 차원을 정렬한 순서에 따라 달라집니다. QlikView에서는 마지막으로 정렬된 차원에서 산출된 열 세그먼트를 기준으로 함수를 평가합니다. 열 정렬 순서는 정렬을 통해 제어되며 반드시 테이블에 표시되는 순서인 것은 아닙니다.
아래 예 2의 테이블 차트 표시에서 최종 정렬 차원은 Month이므로, Above 함수는 개월을 기준으로 평가합니다. 각 달(Jan ~ Aug) (열 세그먼트)에 해당하는 각 Product 값에 대해 일련의 결과가 존재합니다. 이는 일련의 다음 열 세그먼트 즉, 다음 Product에 대한 각 Month로 이어집니다. 각 Product에 대한 각 Customer 값에 해당하는 열 세그먼트 값이 존재하게 됩니다.
Customer | Product | Month | Sum(Sales) | Above(Sum(Sales)) |
---|---|---|---|---|
- | - | - | 2566 | - |
Astrida | AA | Jan | 46 | - |
Astrida | AA | Feb | 60 | 46 |
Astrida | AA | Mar | 70 | 60 |
Astrida | AA | Apr | 13 | 70 |
Astrida | AA | May | 78 | 13 |
Astrida | AA | Jun | 20 | 78 |
Astrida | AA | Jul | 45 | 20 |
Astrida | AA | Aug | 65 | 45 |
예 3:
아래 예 3의 테이블 차트 표시에서 최종 정렬 차원은 Product입니다. 이는 차원 Product을 속성 패널에 있는 정렬 탭의 3번 위치로 이동하여 수행됩니다. 각 Product에 대해 Above 함수가 평가되며, 제품이 AA 및 BB 두 가지뿐이므로 각 시리즈에서 Null이 아닌 결과는 하나뿐입니다. Jan 달에 대한 BB 행에서 Above(Sum(Sales))의 값은 46입니다. AA행의 값은 Null입니다. AA 위의 Product 값이 없으므로 모든 달의 각 AA 행의 값은 항상 Null이 됩니다. 두 번째 시리즈는 Feb 달의 Customer 값, Astrida의 AA 및 BB에 대해 평가됩니다. Astrida에 대해 모든 달이 평가되면, 두 번째 CustomerBetacab 그리고 그 다음으로 시퀀스가 반복됩니다.
Customer | Product | Month | Sum(Sales) | Above(Sum(Sales)) |
---|---|---|---|---|
- | - | - | 2566 | - |
Astrida | AA | Jan | 46 | - |
Astrida | BB | Jan | 46 | 46 |
Astrida | AA | Feb | 60 | - |
Astrida | BB | Feb | 60 | 60 |
Astrida | AA | Mar | 70 | - |
Astrida | BB | Mar | 70 | 70 |
Astrida | AA | Apr | 13 | - |
Astrida | BB | Apr | 13 | 13 |
예 4:
Above 함수는 범위 함수에 대한 입력으로 사용할 수 있습니다. 예: RangeAvg (Above(Sum(Sales),1,3)).
Above() 함수에 대한 인수에서 offset은 1로 설정되며 count는 3으로 설정됩니다. 이 함수는 열 세그먼트(행이 있는 곳)의 현재 행 바로 위의 세 행에서 표현식 Sum(Sales)의 결과를 찾습니다. 이 세 값은 제공된 숫자 범위에서 값의 평균을 구하는 RangeAvg() 함수에 대한 입력으로 사용됩니다.
차원으로 Customer가 포함된 테이블은 RangeAvg() 표현식에 대해 다음과 같은 결과를 제공합니다.
Customer | RangeAvg (Above(Sum(Sales),1,3)) |
---|---|
Astrida | - |
Betacab | 587 |
Canutility | 563 |
Divadip | 603 |
예에서 사용된 데이터:
Monthnames:
LOAD * INLINE [
Month, Monthnumber
Jan, 1
Feb, 2
Mar, 3
Apr, 4
May, 5
Jun, 6
Jul, 7
Aug, 8
Sep, 9
Oct, 10
Nov, 11
Dec, 12
];
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 '|');
올바른 순서로 월을 정렬하려면 차트를 만들 때 해당 차트 속성의 Sort 탭으로 이동한 후 Sort by 아래에서 Expression 확인란을 선택합니다. 표현식 상자에 Monthnumber를 씁니다.