Saltar al contenido principal Saltar al contenido complementario

Aggr

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

  • 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 de clasificación 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)).

Nota de sugerenciaUtilice 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 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 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:

Tipos de ordenación
Tipo de clasificaciónTipos de ordenación disponibles
NUMERICASCENDING, DESCENDING o REVERSE
TEXTASCENDING, A2Z, DESCENDING, REVERSE o Z2A
FREQUENCYDESCENDING, REVERSE o ASCENDING
LOAD_ORDERASCENDING, 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

Ejemplo 1:  

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

Ejemplo 2:  

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.

Ejemplo 3:  

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

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.

Únase al Programa de modernización de la analítica

Remove banner from view

Modernícese sin comprometer sus valiosas aplicaciones de QlikView con el Programa de modernización de la analítica. Haga clic aquí para obtener más información o contactar con nosotros: ampquestions@qlik.com