# Aggr - función de gráfico

Aggr() devuelve un conjunto de valores para la expresión calculada sobre la dimensión o dimensiones indicadas. Por ejemplo, el valor máximo de ventas, por cliente, por región.

La función Aggr se utiliza para agregaciones anidadas, en las que su primer parámetro (la agregación interna) se calcula una vez por valor dimensional. Las dimensiones se especifican en el segundo parámetro (y los parámetros subsiguientes).

Además, la función Aggr debe incluirse en una función de agregación externa, utilizando la matriz de resultados de la función Aggr como entrada para la agregación en la que está anidada.

Sintaxis:

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

Tipo de datos que devuelve: dual

Argumentos:

Argumentos

| Argumento | Descripción |
| --- | --- |
| expr | Una expresión que consiste en una función de agregación. Por defecto, la función de agregación agregará sobre el conjunto de registros posibles definidos por la selección. |
| StructuredParameter | StructuredParameter consiste en una dimensión y, opcionalmente, criterios de ordenación con el formato: `(Dimension(Sort-type, Ordering))`<br><br>La dimensión es un único campo y no puede ser una expresión. La dimensión se utiliza para determinar la matriz de valores para los que se calcula la expresión Aggr.<br><br>Si se incluyen criterios de ordenación, se ordena el conjunto de valores creados por la función Aggr, calculada para la dimensión. Esto es importante cuando el orden de clasificación afecta al resultado de la expresión en la que se incluye la función Aggr.<br><br>Para ver detalles sobre cómo usar los criterios de ordenación, véase [Añadir criterios de ordenación a la dimensión en el parámetro estructurado](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm#Sorting). |
| SetExpression | De forma predeterminada, la función de agregación agregará sobre el conjunto de registros posibles definidos por la selección. Se puede definir un conjunto alternativo de registros mediante una expresión de análisis de conjuntos. |
| DISTINCT | Si el argumento de la expresión va precedido por el cualificador distinct o si no se utiliza ningún cualificador en absoluto, cada combinación distinta de valores de dimensión generará un único valor de retorno. Esta es la forma habitual de hacer agregaciones: cada combinación distinta de valores de dimensión generará una línea en el gráfico. |
| NODISTINCT | Si el argumento de la expresión va precedido por el cualificador nodistinct, cada combinación de valores de dimensión podrá generar más de un valor de retorno, dependiendo de los valores subyacentes de la estructura de datos. Si solo hay una dimensión, la función aggr devolverá una matriz con el mismo número de elementos que filas hay en los datos fuente. |

Las funciones básicas de agregación, como Sum, Min y Avg, devuelven un único valor numérico, mientras que la función Aggr() se puede comparar con crear un conjunto temporal de resultados (una tabla virtual), sobre el que se puede realizar otra agregación. Por ejemplo, calculando un valor de ventas promedio al sumar las ventas por cliente en una sentencia Aggr() y calcular después la media de la suma de resultados: Avg(TOTAL Aggr(Sum(Sales),Customer)).

Nota de sugerenciaUtilice la función Aggr() en dimensiones calculadas si desea crear agregaciones de gráfico anidadas en múltiples niveles.

Limitaciones:

Cada dimensión en una función Aggr() debe ser un único campo y no puede ser una expresión (dimensión calculada).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)Añadir criterios de ordenación a la dimensión en el parámetro estructurado

En su forma básica, el argumento StructuredParameter en la sintaxis de la función Aggr es una única dimensión. La expresión: Aggr(Sum(Sales, Month)) halla el valor total de las ventas de cada mes. No obstante, cuando se incluye dentro de otra función de agregación puede dar resultados inesperados, a menos que se utilicen criterios de ordenación. Esto se produce porque algunas dimensiones pueden ordenarse numéricamente o alfabéticamente, etc.

En el argumento StructuredParameter de la función Aggr, puede especificar criterios de ordenación en la dimensión de su expresión. De esta forma, impondrá un orden de clasificación a la tabla virtual que produce la función Aggr.

El argumento StructuredParameter tiene la sintaxis siguiente:

(FieldName, (Sort-type, Ordering))

Los parámetros estructurados pueden anidarse:

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

El tipo de clasificación puede ser: NUMERIC, TEXT, FREQUENCY o LOAD\_ORDER.

Los tipos de ordenación asociados con cada tipo de clasificación son los siguientes:

Tipos de ordenación permitidos

| Tipo de clasificación | Tipos de ordenación permitidos |
| --- | --- |
| NUMERIC | ASCENDING, DESCENDING o REVERSE |
| TEXT | ASCENDING, A2Z, DESCENDING, REVERSE o Z2A |
| FREQUENCY | DESCENDING, REVERSE o ASCENDING |
| LOAD\_ORDER | ASCENDING, ORIGINAL, DESCENDING o REVERSE |

Los tipos de ordenación REVERSE y DESCENDING son equivalentes.

Para el tipo de clasificación TEXT, los tipos de ordenación ASCENDING y A2Z son equivalentes, y DESCENDING, REVERSE y Z2A son equivalentes.

Para el tipo de clasificación LOAD\_ORDER, los tipos de ordenación ASCENDING y ORIGINAL son equivalentes.

## Ejemplos: expresiones de gráfico usando Aggr

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

#### Ejemplos: expresiones de gráfico

### Ejemplo 1 de expresión de gráfico

#### Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos para crear el ejemplo de expresión de gráfico a continuación.

```
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 más información sobre el uso de cargas inline, vea [Usar cargas inline para cargar datos](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Expresión de gráfico

Cree una visualización de KPI en una hoja de Qlik Sense. Añada la siguiente expresión al KPI como medida:

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

#### Resultado

376.7

#### Explicación

La expresión `Aggr(Sum(UnitSales*UnitPrice), Customer)` halla el valor total de ventas por Customer, y devuelve un conjunto de valores: 295, 715 y 120 por los tres valores de Customer.

Efectivamente, hemos construido una lista temporal de valores sin tener que crear una tabla o columna aparte que contenga dichos valores.

Estos valores se utilizan como datos de entrada en la función Avg() para hallar el valor promedio de las ventas, 376.7.

Para obtener más información sobre las expresiones, vea [Utilizar expresiones en las visualizaciones](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm).

### Ejemplo 2 de expresión de gráfico

#### Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos para crear el ejemplo de expresión de gráfico a continuación.

```
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 más información sobre el uso de cargas inline, vea [Usar cargas inline para cargar datos](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Expresión de gráfico

Cree una visualización de tabla en una hoja de Qlik Sense con Customer, Product, UnitPrice y UnitSales como dimensiones. Añada la siguiente expresión a la tabla como 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 |

#### Explicación

Un conjunto de valores: 16, 16, 15, 15, 12, 12, 22, 22, 25, 15, 15 y 19. El cualificador nodistinct significa que el conjunto de valores contiene un elemento por cada fila de los datos fuente: cada una es el UnitPrice máximo por cada Customer y Product.

### Ejemplo 3 de expresión de gráfico

#### Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos para crear el ejemplo de expresión de gráfico a continuación.

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

#### Expresiones de gráfico

Cree una visualización de tabla en una hoja de Qlik Sense con Year y Month como dimensiones. Añada las siguientes expresiones a la tabla como medidas:

* `Sum(Sales)`
* `Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))` etiquetada como Aggr() estructurada en la tabla.

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

#### Explicación

Este ejemplo muestra los valores agregados durante un período de doce meses para cada año en orden cronológico ascendente, por lo tanto, los parámetros estructurados (numéricos, ascendentes) forman parte de la expresión Aggr(). Se requieren dos dimensiones específicas como parámetros estructurados: Añoy Mes, ordenados (1) Año (numérico) y (2) Mes (numérico). Estas dos dimensiones deben usarse en la visualización de tablas o gráficos. Esto es necesario para que la lista de dimensiones de la función Aggr() se corresponda con las dimensiones del objeto utilizado en la visualización.

Puede comparar la diferencia entre estas medidas en una tabla o en gráficos de líneas aparte:

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

Debe quedar claro que solo la última expresión realiza la acumulación deseada de valores agregados.

## Más información

* [Funciones básicas de agregación](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [Análisis de conjuntos](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)