# Aggr - função de gráfico

Aggr() retorna um conjunto de valores da expressão calculada sobre a dimensão indicada e as dimensões. Por exemplo, o valor máximo de vendas por cliente, por região.

A função Aggr é utilizada para agregações aninhadas, nas quais o primeiro parâmetro (a agregação interna) é calculado uma vez por valor dimensional. As dimensões são especificadas no segundo parâmetro (e parâmetros subsequentes).

Além disso, a função Aggr deve ser incluída em uma função de agregação externa usando a matriz de resultados da função Aggr como entrada para a agregação na qual ela está aninhada.

Sintaxe:

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

Tipo de dados de retorno: dual

Argumentos:

Argumentos

| Argumento | Descrição |
| --- | --- |
| expr | Uma expressão que consiste em uma função de agregação. Por padrão, a função de agregação agregará um conjunto de registros possíveis definidos pela seleção. |
| StructuredParameter | StructuredParameter consiste em uma dimensão e, opcionalmente, em critérios de classificação no seguinte formato: `(Dimension(Sort-type, Ordering))`<br><br>A dimensão é um campo único e não pode ser uma expressão. A dimensão é usada para determinar a matriz de valores para a qual a expressão Aggr é calculada.<br><br>Se critérios de classificação estiverem incluídos, a matriz de valores criada pela função Aggr, calculada para a dimensão, será classificada. Isso é importante quando a ordem de classificação afeta o resultado da expressão da função Aggr em que está delimitada.<br><br>Para obter detalhes de como usar critérios de classificação, consulte [Adicionando critérios de classificação à dimensão no parâmetro estruturado](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm#Sorting). |
| SetExpression | Por padrão, a função de agregação agregará um conjunto de registros possíveis definidos pela seleção. Um conjunto de registros alternativos pode ser definido por uma expressão de análise. |
| DISTINCT | Se o argumento da expressão for precedido pelo qualificador distinct ou se não for usado nenhum qualificador, cada combinação distinta de valores de dimensão gerará somente um valor de retorno. Esta é a maneira como as agregações normais são criadas: cada combinação distinta de valores de dimensão gera uma linha no gráfico. |
| NODISTINCT | Se o argumento da expressão for precedido pelo qualificador nodistinct, cada combinação de valores de dimensão poderá gerar mais de um valor de retorno, dependendo da estrutura de dados subjacente. Se houver apenas uma dimensão, a função aggr retornará uma matriz com o mesmo número de elementos que o número de linhas nos dados de origem. |

Funções de agregação básicas, como Sum, Min e Avg, retornam um único valor numérico, enquanto a função Aggr() pode ser comparada à criação de um conjunto de resultados temporários em etapas (uma tabela virtual) com os quais outra agregação pode ser feita. Por exemplo, calculando uma média do valor de vendas ao somar as vendas por cliente em um comando Aggr() e depois calculando a média dos resultados somados: Avg(TOTAL Aggr(Sum(Sales),Customer)).

Nota de dicaUse a função Aggr() em dimensões calculadas se quiser criar agregações de gráfico aninhadas em vários níveis.

Limitações:

Cada dimensão em uma função Aggr() deve ser um campo único e não pode ser uma expressão (dimensão calculada).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)Adicionando critérios de classificação à dimensão no parâmetro estruturado

Em sua forma básica, o argumento StructuredParameter na sintaxe da função Aggr é uma dimensão única. A expressão: Aggr(Sum(Sales, Month)) encontra o valor total das vendas para cada mês. No entanto, quando delimitada em outra função de agregação, pode haver resultados inesperados, a menos que sejam utilizados critérios de classificação. Isso porque algumas dimensões podem ser classificadas por ordem alfabética ou numérica, e assim por diante.

No argumento StructuredParameter da função Aggr, você pode especificar critérios de classificação na dimensão em sua expressão. Dessa forma, você impõe uma ordem de classificação na tabela virtual que é produzida pela função Aggr.

O argumento StructuredParameter tem a seguinte sintaxe:

(FieldName, (Sort-type, Ordering))

Parâmetros estruturados podem ser aninhados:

(FieldName, (FieldName2, (Sort-type, Ordering)))

O tipo de classificação pode ser: NUMERIC, TEXT, FREQUENCY ou LOAD\_ORDER.

Os tipos de ordenação associados a cada tipo de classificação são os seguintes:

Tipos de ordenação permitidos

| Tipo de classificação | Tipos de ordenação permitidos |
| --- | --- |
| NUMERIC | ASCENDING, DESCENDING ou REVERSE |
| TEXT | ASCENDING, A2Z, DESCENDING, REVERSE ou Z2A |
| FREQUENCY | DESCENDING, REVERSE ou ASCENDING |
| LOAD\_ORDER | ASCENDING, ORIGINAL, DESCENDING ou REVERSE |

Os tipos de ordenação REVERSE e DESCENDING são equivalentes.

Para o Tipo de classificação TEXT, os tipos de ordenação ASCENDING e A2Z são equivalentes, e DESCENDING, REVERSE e Z2A são equivalentes.

Para o Tipo de classificação LOAD\_ORDER, os tipos de ordenação ASCENDING e ORIGINAL são equivalentes.

## Exemplos: Expressões de gráfico usando Aggr

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

#### Exemplos - expressões de gráfico

### Exemplo 1 de expressão de gráfico

#### Script de carregamento

Carregue os seguintes dados como um carregamento inline no editor de carregamento de dados para criar o exemplo de expressão de gráfico abaixo.

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

Para obter mais informações sobre como usar carregamentos inline, consulte [Usando carregamentos inline para carregar dados](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Expressão de gráfico

Crie uma visualização de KPI em uma pasta do Qlik Sense. Adicione a seguinte expressão ao KPI como uma medida:

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

#### Resultado

376.7

#### Explicação

A expressão `Aggr(Sum(UnitSales*UnitPrice), Customer)` encontra o valor total das vendas por Customer e retorna uma matriz de valores: 295, 715 e 120 para os três valores Customer.

Efetivamente, criamos uma lista temporária de valores sem ter que criar uma tabela ou coluna explícita contendo esses valores.

Esses valores são usados como entrada para a função de Avg() para encontrar a média do valor de vendas, 376.7.

Para obter mais informações sobre expressões, consulte [Usando expressões em visualizações](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm).

### Exemplo 2 de expressão de gráfico

#### Script de carregamento

Carregue os seguintes dados como um carregamento inline no editor de carregamento de dados para criar o exemplo de expressão de gráfico abaixo.

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

Para obter mais informações sobre como usar carregamentos inline, consulte [Usando carregamentos inline para carregar dados](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Expressão de gráfico

Crie uma visualização de tabela em uma pasta do Qlik Sense com Customer, Product, UnitPrice e UnitSales como dimensões. Adicione a seguinte expressão à tabela como uma medida:

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

#### Resultado

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

#### Explicação

Uma matriz de valores: 16, 16, 15, 15, 12, 12, 22, 22, 25, 15, 15 e 19. O qualificador nodistinct significa que a matriz contém um elemento para cada linha na fonte de dados: cada um deles é o UnitPrice máximo para cada Customer e Product.

### Exemplo 3 de expressão de gráfico

#### Script de carregamento

Carregue os seguintes dados como um carregamento inline no editor de carregamento de dados para criar o exemplo de expressão de gráfico abaixo.

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

#### Expressões de gráfico

Crie uma visualização de tabela em uma pasta do Qlik Sense com Year e Month como dimensões. Adicione as seguintes expressões à tabela como medidas:

* `Sum(Sales)`
* `Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))` rotulado como Structured Aggr() na tabela.

#### Resultado

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

#### Explicação

Este exemplo exibe os valores agregados ao longo de um período de doze meses para cada ano em ordem cronológica crescente, daí a parte de parâmetros estruturados (Numeric, Ascending) da expressão Aggr(). Duas dimensões específicas são necessárias como parâmetros estruturados: Ano e Mês, classificados como (1) Ano (numérico) e (2) Mês (numérico). Essas duas dimensões devem ser usadas na visualização de tabela ou gráfico. Isso é necessário para que a lista de dimensões da função Aggr() corresponda às dimensões do objeto usado na visualização.

Você pode comparar a diferença entre essas medidas em uma tabela ou em gráficos de linhas separados:

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

Deve ficar claro que somente a última expressão executa o acúmulo desejado de valores agregados.

## Saiba mais

* [Funções básicas de agregação](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [Análise de conjunto](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)