# Aggr - 차트 함수

Aggr()은 지정된 하나 또는 복수의 차원에서 계산된 표현식에 대한 값의 배열을 반환합니다. 판매량, 고객 및 지역별 최대값을 예로 들 수 있습니다.

Aggr 함수는 중첩 집계에 사용되며 첫 번째 매개 변수(내부 집계)는 차원 값마다 한 번 계산됩니다. 차원은 두 번째 매개 변수(및 후속 매개 변수)에서 지정됩니다.

또한 Aggr 함수는 중첩된 집계에 대한 입력으로 Aggr 함수의 결과로 구성된 배열을 사용하는 외부 집계 함수 안에 포함되어야 합니다.

구문:

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

반환 데이터 유형: 이중

인수:

인수

| 인수 | 설명 |
| --- | --- |
| expr | 집계 함수로 구성된 표현식. 기본적으로 집계 함수는 선택에 의해 정의된 사용 가능한 레코드의 집합을 집계합니다. |
| StructuredParameter | StructuredParameter는 차원과 `(Dimension(Sort-type, Ordering))` 형식의 정렬 기준(선택 사항)으로 구성되어 있습니다.<br><br>차원은 단일 필드이며 표현식이 될 수 없습니다. 차원은 Aggr 표현식으로 계산되는 값의 배열을 결정하는 데 사용됩니다.<br><br>정렬 기준이 포함된 경우, 차원에 대해 계산되고 Aggr 함수에 의해 생성된 값의 배열이 정렬됩니다. Aggr 함수가 포함된 표현식의 결과에 정렬 순서가 영향을 미치는 경우에 중요합니다.<br><br>정렬 기준 사용 방법에 대한 자세한 내용은 [구조화된 파라메타로 차원에 정렬 기준 추가](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm#Sorting)를 참조하십시오. |
| SetExpression | 기본적으로 집계 함수는 선택에 의해 정의된 사용 가능한 레코드의 집합을 집계합니다. 집합 분석 표현식으로 대체 레코드 집합을 정의할 수 있습니다. |
| DISTINCT | 표현식 인수에 distinct 한정자가 선행하는 경우 또는 아무 한정자도 사용하지 않는 경우 각 차원 값의 조합에서 하나의 반환 값만 생성됩니다. 이는 집계가 구성되는 일반적인 방식이며, 각 차원 값의 고유 조합이 차트에서 한 줄을 이룹니다. |
| NODISTINCT | 표현식 인수에 nodistinct 한정자가 선행하는 경우 원본 데이터 구조에 따라 각 차원 값의 조합에서 2개 이상의 반환 값이 생성될 수 있습니다. 차원이 하나뿐이라면 소스 데이터에 행이 있으므로 aggr 함수는 동일한 요소 수의 배열을 반환합니다. |

Sum, Min, Avg와 같은 기본 집계 함수는 단일 숫자 값을 반환하지만, Aggr() 함수는 다른 집계를 만들 수 있는 임시 계획 결과 집합(가상 테이블)을 만드는 것과 비교할 수 있습니다. 예를 들어, Aggr() 문에서 판매량을 고객과 합산하여 평균 판매량 값을 계산하고 합산된 결과의 평균을 계산하는 것입니다. Avg(TOTAL Aggr(Sum(Sales),Customer)).

팁 메모 Aggr() 함수를 계산된 차원에서 사용하여 다양한 수준의 중첩 차트 집계를 생성할 수 있습니다.

제한 사항:

Aggr() 함수의 각 차원은 단일 필드여야 하며 표현식(계산된 차원)이 될 수 없습니다.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)구조화된 파라메타로 차원에 정렬 기준 추가

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과 연결됩니다.

허용되는 Ordering 유형

| 정렬 유형 | 허용되는 Ordering 유형 |
| --- | --- |
| 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이 동일합니다.

## 예: Aggr을 사용한 차트 표현식

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)

#### 예 - 차트 표현식

### 차트 표현식 예 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|25|25
Canutility|AA|8|15
Canutility|CC|0|19
] (delimiter is '|');
```

인라인 로드 사용에 대한 자세한 내용은 [인라인 로드를 사용하여 데이터 로드](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)를 참조하십시오.

#### 차트 표현식

Qlik Sense 시트에 KPI 시각화를 만듭니다. 다음 표현식을 측정값으로 KPI에 추가합니다.

`Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))`

#### 결과

376.7

#### 설명

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

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

이 값은 판매량의 평균 값 376.7을 찾기 위해 Avg() 함수에 입력으로 사용됩니다.

집합 표현식에 대한 자세한 내용은 [시각화에서 표현식 사용](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm)을 참조하십시오.

### 차트 표현식 예 2

#### 로드 스크립트

데이터 로드 편집기에서 다음 데이터를 인라인 로드로 로드하여 아래 차트 표현식 예를 만듭니다.

```
ProductData:

LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|BB|7|12
Betacab|CC|2|22
Betacab|CC|4|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|AA|5|11
Canutility|CC|0|19
] (delimiter is '|');
```

인라인 로드 사용에 대한 자세한 내용은 [인라인 로드를 사용하여 데이터 로드](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)를 참조하십시오.

#### 차트 표현식

Customer, Product, UnitPrice, UnitSales가 차원으로 포함된 Qlik Sense 시트에 테이블 시각화를 만듭니다. 테이블에 다음 표현식을 측정값으로 추가합니다.

`Aggr(NODISTINCT Max(UnitPrice), Customer, Product)`

#### 결과

| Customer | Product | UnitPrice | UnitSales | Aggr(NODISTINCT Max(UnitPrice), Customer, Product) |
| --- | --- | --- | --- | --- |
| Astrida | AA | 15 | 10 | 16 |
| Astrida | AA | 16 | 4 | 16 |
| Astrida | BB | 9 | 9 | 15 |
| Astrida | BB | 15 | 10 | 15 |
| Betacab | BB | 10 | 5 | 12 |
| Betacab | BB | 12 | 7 | 12 |
| Betacab | CC | 20 | 4 | 22 |
| Betacab | CC | 22 | 2 | 22 |
| Betacab | DD | 25 | 25 | 25 |
| Canutility | AA | 11 | 5 | 15 |
| Canutility | AA | 15 | 8 | 15 |
| Canutility | CC | 19 | 0 | 19 |

#### 설명

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

### 차트 표현식 예 3

#### 로드 스크립트

데이터 로드 편집기에서 다음 데이터를 인라인 로드로 로드하여 아래 차트 표현식 예를 만듭니다.

```
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;
```

#### 차트 표현식

Year와 Month가 차원으로 포함된 Qlik Sense 시트에 테이블 시각화를 만듭니다. 테이블에 다음 표현식을 측정값으로 추가합니다.

* `Sum(Sales)`
* 테이블에서 Structured Aggr()로 `Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))` 레이블이 지정됩니다.

#### 결과

| Year | Month | Sum(Sales) | Structured Aggr() |
| --- | --- | --- | --- |
| 2013 | Jan | 53495 | 53495 |
| 2013 | Feb | 48580 | 102075 |
| 2013 | Mar | 25651 | 127726 |
| 2013 | Apr | 36585 | 164311 |
| 2013 | May | 61211 | 225522 |
| 2013 | Jun | 23689 | 249211 |
| 2013 | Jul | 42311 | 291522 |
| 2013 | Aug | 41913 | 333435 |
| 2013 | Sep | 28886 | 362361 |
| 2013 | Oct | 25977 | 388298 |
| 2013 | Nov | 44455 | 432753 |
| 2013 | Dec | 64144 | 496897 |
| 2014 | Jan | 67775 | 67775 |

#### 설명

이 예에서는 각 연도에 대해 12개월 동안 집계된 값을 시간 오름차순으로 표시하므로 구조화된 매개 변수(숫자, 오름차순)는 Aggr() 표현식의 일부입니다. 구조화된 매개 변수로 두 가지 특정 차원이 필요합니다. 연도 및 월, 정렬된 (1) 연도(숫자) 및 (2) 월(숫자). 이 두 차원은 테이블 또는 차트 시각화에서 사용해야 합니다. 이를 통해 Aggr() 함수의 차원 목록이 시각화에 사용된 개체의 차원과 일치할 수 있습니다.

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

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

후자의 식만이 집계된 값의 원하는 누적을 수행한다는 것을 분명히 알 수 있습니다.

## 자세한 정보

* [기본 집계 함수](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [집합 분석](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)