Aggr - función de gráfico

Aggr() devuelve una matriz de valores para la expresión calculada sobre la dimensión o las dimensiones establecidas. Por ejemplo, el valor máximo de ventas, por cliente, por región. La función Aggr se utiliza para agregaciones avanzadas, en las que la función Aggr está incluida en otra función de agregación, utilizando el conjunto de resultados de la función Aggr como entrada a la agregación en la que se anidada.

Sintaxis:  

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

Tipo de datos que devuelve: dual

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, en unos criterios de ordenación con el siguiente formato: (Dimension(Sort-type, Ordering))

La dimensión es un único campo y no puede ser una expresión. La dimensión se utiliza para definir el conjunto de valores para los que se calcula la función Aggr.

Si se incluyen criterios de ordenación, se ordena el conjunto de valores creados por la función Aggr, calculados para la dimensión. Esto es importante cuando el orden afecta al resultado de la expresión en la que va incluida la función Aggr.

Para más detalles sobre cómo usar criterios de ordenación, véase Añadir criterios de ordenación a la dimensión en el parámetro estructurado.

SetExpression Por defecto, 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 cualificador alguno, cada combinación distinta de valores de dimensión generará únicamente un solo valor de retorno. Esta es la forma habitual de hacer agregaciones: cada combinación distinta de valores de dimensión generará una línea del gráfico.
NODISTINCT

Si el argumento de la expresión va precedido por el cualificador nodistinct, cada combinación de valores de dimensión puede generar más de un valor de retorno, dependiendo de la estructura de datos subyacente. Si solo hay una dimensión, la función aggr devolverá un conjunto con el mismo número de elementos como filas 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() puede compararse con la creación de un conjunto de resultados temporal (una tabla virtual) sobre el que se puede hacer otra agregación. Por ejemplo, computando un valor promedio de valores de ventas sumando las ventas por cliente en una sentencia Aggr() y luego calculando la media de los resultados sumados: Avg(TOTAL Aggr(Sum(Sales), Customer)).

Sugerencia: Utilice la función Aggr() en dimensiones calculadas si desea crear agregación de gráficos anidada en múltiples niveles.

Limitaciones:  

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

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 total de ventas de cada mes. No obstante, cuando se encuentra dentro de otra función de agregación puede haber resultados inesperados, a menos que se utilicen criterios de ordenación. Esto sucede porque algunas dimensiones pueden ordenarse numérica 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 manera impone un orden 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 se pueden anidar:

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

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 y resultados:  

Ejemplo Resultado
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

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

Efectivamente, hemos creado una lista temporal de valores sin tener que crear una tabla o columna explícita que contenga dichos valores.

Estos valores se utilizan como dato de entrada en la función Avg(), para hallar el valor medio de las ventas, 376,6667. (Debe tener Totales seleccionado en Presentation en el panel de propiedades).

Aggr(NODISTINCT Max(UnitPrice), Customer)

Un conjunto de valores: 16, 16, 16, 25, 25, 25, 19 y 19. El cualificador nodistinct indica que el conjunto contiene un elemento por cada fila de datos fuente: cada uno es el máximo UnitPrice para cada Customer y Product.

max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Utilizando criterios de ordenación en el argumento StructuredParameter de la expresión tenemos:max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Sin utilizar criterios de ordenación, el resultado de la expresión max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) depende de cómo esté ordenada la dimensión MonthYear. Puede que no obtengamos el resultado que queremos.

Añadiendo valores de tipo de clasificación y tipo de ordenación a la dimensión, otorgamos criterios de ordenación al parámetro estructurado: (MonthYear, (NUMERIC, ASCENDING)), donde el tipo de clasificación NUMERIC y la ordenación ASCENDING determinan que MonthYear se ordene de forma numérica ascendente.

Aquí estamos intentando hallar el mayor incremento en número de clientes, mes a mes. Esto podría utilizarse en una visualización de KPI, por ejemplo.

La parte Aggr de la expresión compara el número total de clientes de un mes (dado por MonthYear) con el número total del mes anterior.

Como utilizamos criterios de ordenación con la dimensión: (MonthYear,(NUMERIC, ASCENDING)), estamos seguros de que Aggr compara los números de clientes de meses consecutivos en la tabla virtual ordenando los meses de forma numérica ascendente y no por orden alfabético ascendente.

Datos utilizados en los ejemplos:

Cree una tabla con Customer, Product, UnitPrice y UnitSales como dimensiones. Añada la expresión a la tabla, como medida.

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