Aggr - 차트 함수

Aggr()은 지정된 하나 또는 복수의 차원에서 계산된 표현식에 대한 값의 배열을 반환합니다. 판매량, 고객 및 지역별 최대값을 예로 들 수 있습니다. Aggr 함수는 고급 집계에 사용됩니다. Aggr 함수는 중첩된 집계에 대한 입력으로 Aggr 함수의 결과 배열을 사용하는 다른 집계 함수 안에 포함될 수 있습니다.

Syntax:  

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

Return data type: dual

Arguments:  

인수 설명
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() 함수를 계산된 차원에서 사용하여 다양한 수준의 중첩 차트 집계를 생성할 수 있습니다.

Limitations:  

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일 수 있습니다.

Ordering 유형은 다음과 같이 각 Sort-type과 연결됩니다.

Sort-type 허용되는 Ordering 유형
NUMERIC ASCENDING, DESCENDING 또는 REVERSE
TEXT ASCENDING, A2Z, DESCENDING, REVERSE 또는 Z2A
FREQUENCY DESCENDING, REVERSE 또는 ASCENDING
LOAD_ORDER ASCENDING, ORIGINAL, DESCENDING 또는 REVERSE

Ordering 유형 REVERSEDESCENDING은 동일합니다.

Sort-type TEXT의 경우 Ordering 유형 ASCENDINGA2Z가 동일하고, DESCENDING, REVERSEZ2A가 동일합니다.

Sort-type LOAD_ORDER의 경우 Ordering 유형 ASCENDINGORIGINAL이 동일합니다.

Examples and results:  

결과
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

표현식 Aggr(Sum(UnitSales*UnitPrice), Customer)은 판매액의 총 값을 Customer로 찾은 다음 3개의 Customer 값에 대해 295, 715 및 120의 값 배열을 반환합니다.

실제로는 해당 값을 포함하는 명시적인 테이블이나 열을 만들지 않고 임시 값 목록을 작성했습니다.

이 값은 판매량의 평균 값 376.6667을 찾기 위해 Avg() 함수에 입력으로 사용됩니다. (속성 패널의 프레젠테이션 아래에서 합계가 선택되어 있어야 합니다.)

Aggr(NODISTINCT Max(UnitPrice), Customer)

값의 배열은 16, 16, 16, 25, 25, 25, 19 및 19입니다. nodistinct 한정자는 배열이 소스 데이터의 각 행에 대해 하나의 요소를 포함하고 있음을 의미합니다. 각각은 각 CustomerProduct에 대한 최대 UnitPrice입니다.

예에서 사용된 데이터:

Customer, Product, UnitPriceUnitSales가 차원으로 포함된 테이블을 만듭니다. 테이블에 표현식을 측정값으로 추가합니다.

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 '|');

 

Examples and results: 구조화된 파라메타

결과
Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

이 측정값은 표현식의 구조화된 파라메타 인수에서 정렬 기준을 사용하여 매월 연간 누계 판매액을 계산합니다.

정렬 기준을 사용하지 않으면 표현식 Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) ))의 결과가 차원 YearMonth 정렬 방법에 따라 달라집니다. 따라서 원하는 결과를 얻지 못할 수도 있습니다.

Sort-type 및 Ordering 유형에 대한 값을 차원에 추가하여 다음 구조화된 파라메타에 정렬 기준을 지정합니다. (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)). Sort-type NUMERIC 및 Ordering ASCENDING에 의해 YearMonth가 숫자순으로 오름차순 정렬됩니다.

예에서 사용된 데이터:

다음 로드 스크립트는 주문 줄이 있는 주문 테이블을 생성하며 구조화된 파라메타의 예에서 사용됩니다.

Set vNumberOfOrders = 1000; OrderLines: Load RowNo() as OrderLineID, OrderID, OrderDate, Round((Year(OrderDate)-2005)*1000*Rand()*Rand()*Rand1) as Sales While Rand()<=0.5 or IterNo()=1; Load * Where OrderDate<=Today(); Load Rand() as Rand1, Date(MakeDate(2013)+Floor((365*4+1)*Rand())) as OrderDate, RecNo() as OrderID Autogenerate vNumberOfOrders; Calendar: Load distinct Year(OrderDate) as Year, Month(OrderDate) as Month, OrderDate Resident OrderLines;

이러한 측정값 간의 차이를 테이블 또는 별도의 꺾은선형 차트에서 비교할 수 있습니다.

  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) ))
  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

두 번째 측정값은 매월 정확한 연간 판매액을 제공합니다.