Aggr
Aggr() 은 지정된 차원 전체에서 계산된 표현식의 값 배열을 반환합니다. 예: 고객별, 지역별 판매 최대값.
Aggr 함수는 첫 번째 매개 변수(내부 집계)가 차원 값당 한 번 계산되는 중첩 집계에 사용됩니다. 차원은 두 번째 매개 변수(및 후속 매개 변수)에 지정됩니다.
또한 Aggr 함수는 중첩된 집계에 대한 입력으로 Aggr 함수의 결과 배열을 사용하여 외부 집계 함수로 묶어야 합니다.
구문:
Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})
반환 데이터 유형: dual
인수:
- expr: 집계 함수로 구성된 표현식. 기본적으로 집계 함수는 선택에 의해 정의된 사용 가능한 레코드의 집합을 집계합니다.
-
StructuredParameter: StructuredParameter는 (Dimension(Sort-type, Ordering)) 형식의 차원과 정렬 기준(선택적)으로 구성됩니다. 차원은 단일 필드이며 표현식이 될 수 없습니다. 차원은 Aggr 표현식이 계산될 값 배열을 결정하는 데 사용됩니다.
정렬 기준이 포함된 경우 차원에 대해 계산되며 Aggr 함수에 의해 만들어진 값 배열이 정렬됩니다. 이는 정렬 순서가 Aggr 함수가 포함되어 있는 표현식의 결과에 영향을 주는 경우에 중요합니다. 정렬 기준 사용 방법에 대한 자세한 내용은 구조화된 파라메타의 차원에 정렬 기준 추가를 참조하십시오.
- SetExpression: 기본적으로 집계 함수는 선택에 의해 정의된 사용 가능한 레코드의 집합을 집계합니다. 집합 분석 표현식으로 대체 레코드 집합을 정의할 수 있습니다.
- DISTINCT: 표현식 인수에 distinct 한정자가 선행하는 경우 또는 아무 한정자도 사용하지 않는 경우 각 차원 값의 조합에서 하나의 반환 값만 생성됩니다. 이는 집계가 구성되는 일반적인 방식이며, 각 차원 값의 고유 조합이 차트에서 한 줄을 이룹니다.
- NODISTINCT: 표현식 인수에 nodistinct 한정자가 선행하는 경우 원본 데이터 구조에 따라 각 차원 값의 조합에서 2개 이상의 반환 값이 생성될 수 있습니다. 차원이 하나뿐이라면 소스 데이터에 행이 있으므로 aggr 함수는 동일한 요소 수의 배열을 반환합니다.
Sum, Min, Avg 등의 기본 집계 함수는 단일 숫자 값을 반환하며, Aggr() 함수는 다른 집계가 실행될 수 있는 임시 계획 결과 집합(가상 테이블)을 만드는 것과 비교할 수 있습니다. 예를 들어, Aggr() 문에서 고객별 판매량을 합산하여 평균 판매량 값을 계산하고 합산된 결과의 평균을 계산하는 등입니다. Avg(TOTAL Aggr(Sum(Sales), Customer)).
제한 사항:
Aggr() 함수의 각 차원은 단일 필드여야 하며 표현식(계산된 차원)이 될 수 없습니다.
기본 형식인 경우, Aggr 함수 구문의 StructuredParameter 인수는 단일 차원입니다. 표현식: Aggr(Sum(Sales, Month))는 각 달에 대한 총 판매량 값을 찾습니다. 하지만 다른 집계 함수 안에 포함된 경우 정렬 기준을 사용하지 않으면 예기치 않은 결과가 발생할 수 있습니다. 이는 일부 차원이 숫자순이나 사전순 등으로 정렬될 수 있기 때문입니다.
Aggr 함수의 StructuredParameter 인수에서는 표현식의 차원에 대한 정렬 기준을 지정할 수 있습니다. 이 방법으로, Aggr 함수에 의해 생성된 가상 테이블에 정렬 순서를 적용합니다.
StructuredParameter 인수의 구문은 다음과 같습니다.
(FieldName, (Sort-type, Ordering))
구조화된 파라메타는 다음과 같이 중첩할 수 있습니다.
(FieldName, (FieldName2, (Sort-type, Ordering)))
Sort-type은 NUMERIC, TEXT, FREQUENCY 또는 LOAD_ORDER입니다.
각 정렬 유형과 연관된 순서 유형은 다음과 같습니다.
정렬 유형 | 사용 가능한 순서 유형 |
---|---|
NUMERIC | ASCENDING, DESCENDING 또는 REVERSE |
TEXT | ASCENDING, A2Z, DESCENDING, REVERSE 또는 Z2A |
FREQUENCY | DESCENDING, REVERSE 또는 ASCENDING |
LOAD_ORDER | ASCENDING, ORIGINAL, DESCENDING 또는 REVERSE |
Ordering 유형 REVERSE와 DESCENDING은 동일합니다.
Sort-type TEXT의 경우 Ordering 유형 ASCENDING과 A2Z이 동일하며 DESCENDING, REVERSE 및 Z2A가 동일합니다.
Sort-type LOAD_ORDER의 경우 Ordering 유형 ASCENDING과 ORIGINAL이 동일합니다.
예
예 1:
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))
표현식 Aggr(Sum(UnitSales*UnitPrice), Customer)는 Customer별 총 판매량 값을 찾은 후 세 개의 Customer 값에 대해 295, 715, 120의 값 배열을 반환합니다.
사실상 이러한 값이 포함된 명시적 테이블이나 열을 만들지 않고도 임시 값 목록이 만들어졌습니다. 이 값은 판매량의 평균 값 376.6667을 찾기 위해 Avg() 함수에 입력으로 사용됩니다. (속성 패널의 Presentation 아래에서 합계가 선택되어 있어야 합니다.
예 2:
Aggr(NODISTINCT Max(UnitPrice), Customer)
값의 배열은 16, 16, 16, 25, 25, 25, 19 및 19입니다. nodistinct 한정자는 소스 데이터의 각 행에 대한 요소가 하나씩 배열에 포함되어 있음을 의미하며 각 요소는 Customer 및 Product의 최대 UnitPrice 입니다.
예 3:
max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))
표현식에 StructuredParameter 인수의 정렬 기준을 사용한 경우: max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))
정렬 기준을 사용하지 않는 경우 max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) 표현식의 결과는 MonthYear 차원이 정렬되는 방식에 따라 생성됩니다. 원하는 결과를 얻지 못할 수 있습니다. 다음과 같이 정렬 유형 및 순서 지정 유형에 대한 값을 차원에 추가함으로써 구조화된 파라메타에 정렬 기준을 제공합니다. (MonthYear, (NUMERIC, ASCENDING)). 여기서 정렬 유형 NUMERIC과 순서 ASCENDING에 의해 MonthYear가 숫자순으로 오름차순 정렬됩니다.
여기서, 월 단위로 고객 수가 가장 많이 증가한 달을 찾아볼 수 있습니다. 이는 KPI 시각화 등에서 사용할 수 있습니다.
표현식의 Aggr 부분은 특정 달(MonthYear에서 제공)의 총 고객 수를 이전 달의 총 고객 수와 비교합니다. 차원에 정렬 기준이 사용되었기 때문에((MonthYear,(NUMERIC, ASCENDING))) Aggr은 사전순 오름차순이 아닌 숫자순 오름차순으로 달을 정렬하여 가상 테이블의 연속된 달의 고객 수를 비교합니다.
예에서 사용된 데이터:
Customer, Product, UnitPrice, UnitSales가 차원으로 포함된 테이블을 만듭니다. 테이블에 표현식을 계수로 추가합니다.
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|25|25
Canutility|AA|8|15
Canutility|CC||19
] (delimiter is '|');