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 avanzadas, en las que la función Aggr va incluida dentro de otra función de agregación, utilizando el conjunto de resultados de la función Aggr como datos de entrada para la agregación en la que se anida.

Syntax:  

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

Return data type: dual

Arguments:  

Argumento Descripción
expr

Una expresión que consiste en una función de agregación. De forma predeterminada, 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 en el formato: (Dimensión(Tipo de clasificación, Orden))

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.

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.

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.

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

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

Limitations:  

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

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

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.

Examples and results:  

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

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 explícita 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,6667. (Debe tener Totales seleccionado en Presentación 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 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.

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

 

Examples and results: Parámetros estructurados

Ejemplo Resultado
Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

Esta medida calcula las ventas del año hasta la fecha de cada mes utilizando criterios de ordenación en el argumento del parámetro estructurado en la expresión.

Sin criterios de ordenación el resultado de la expresión Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) )) depende de cómo estén ordenadas las dimensiones Year y Month. Puede que no obtengamos el resultado que deseamos.

Añadiendo valores para tipo de clasificación y tipo de ordenación a la dimensión, otorgamos criterios de ordenación al parámetro estructurado: (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)). El tipo de clasificación NUMERIC y el orden ASCENDING determinan que Year y Month se ordenen de forma numérica ascendente.

Datos utilizados en los ejemplos:

El siguiente script de carga genera una tabla de pedidos con líneas de orden, que se utilizarán en el ejemplo de los parámetros estructurados.

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;

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

La segunda medida proporciona las ventas correctas del año hasta la fecha para cada mes.