![]() ![]() |
La clase Total existe para albergar las funciones agregadas. La clase Total contiene una serie de funciones para agregar. Estas funciones son extensiones BIRT a JavaScript que resumen un conjunto de filas. El Motor de informes BIRT implementa una función en las dos fases siguientes:
BIRT vuelve a escribir los scripts que contienen un agregado, creando un script revisado que realiza las dos fases. En el único momento en el que es importante tener presente este proceso es al depurar una expresión que contenga un agregado. Considere el ejemplo de mostrar un valor en el pie de página de un grupo, donde el valor es un porcentaje del total de todas las cuentas. La siguiente sentencia realiza esta acción:
En el ejemplo anterior, Total.OVERALL hace que BIRT calcule el agregado de suma sobre todas las filas, aunque la expresión aparezca en un total de grupo. Para calcular la expresión en el ejemplo anterior, BIRT realiza un paso para calcular el saldo total y un segundo paso para calcular el valor de cada cuenta.
Las reglas generales para la clase Total son las siguientes:
Todos los agregados permiten dos argumentos opcionales para indicar el filtrado y la agrupación:
Un argumento de filtro proporciona una expresión booleana que BIRT evalúa en cada fila. BIRT sólo tiene en cuenta las filas que coinciden con el filtro al calcular el agregado. Por ejemplo, un informe puede sumar los límites de crédito de los clientes activos para determinar la exposición máxima de crédito.
La expresión se ejecuta en la fase de transformación de los datos. Puede acceder a columnas en la fila, parámetros, funciones definidas por el usuario y otros recursos tal y como se define en la descripción de contexto anterior. Por ejemplo:
Un argumento de filtro nulo o no definido o Total.NO_FILTER significa que no se proporciona ningún filtro. Si la aplicación no proporciona ningún filtro, el valor predeterminado del filtro es no definido. Si proporciona un argumento de grupo, debe proporcionar un valor nulo o Total.NO_FILTER para indicar que no hay ningún filtro.
Con frecuencia es necesario que los informes visualicen totales para el nivel de agrupación actual. Por ejemplo, suponga que un informe está agrupado por clientes y pedidos y que los registros de detalle representan los elementos de la línea en pedidos. Cada elemento de la línea tiene un precio por unidad y una cantidad, como en el agregado siguiente:
Este agregado suma los valores del grupo actual. Si está situado en el pie de página, visualiza la suma de elementos de la línea para ese pedido. Si está situado en el pie de página del cliente, visualiza la suma de todos los elementos de la línea para todos los pedidos para ese cliente. Y, si está situado en el pie de página del informe, visualiza la suma de todos los elementos de la línea para todos los clientes.
Sin embargo, a veces la aplicación necesita acceder a un total desde distintos niveles de agrupación. Por ejemplo, es posible que desee saber el valor total de un pedido como un porcentaje de todos los pedidos para el cliente. En este caso, debe acceder al total de un grupo que no sea el grupo actual. Puede hacer esto utilizando el argumento de agrupación:
El argumento de grupo puede ser uno de los siguientes:
Los ejemplos siguientes ilustran estos tipos de argumentos de grupo:
Total.sum( row["myCol"] null, null ); // Current group Total.sum( row["myCol"], null, "Customer" ); // By name Total.sum( row["myCol"], null, "row[`custID']" ); // By group key Total.sum( row["myCol"], null, 1 ); // By group index Total.sum( row["myCol"], null, "Overall" ); // Grand totals Total.sum( row["myCol"], null, 0 ); // Grand totals
Debe proporcionar el argumento de filtro al utilizar el argumento de agrupación. Si no necesita un filtro, proporcione nulo como el valor del filtro. El índice de grupo no va entre comillas. Se debe proporcionar como un número. Es decir, 1 indica el grupo en el nivel 1, mientras que "1" indica el grupo denominado "1".
OVERALL
Esta función agregada calcula el valor promedio matemático. Si la expresión se evalúa en un número, esta función devuelve el promedio de estos números. Si la expresión se evalúa en una fecha, esta función devuelve la fecha promedio.
Total.ave( expr [, filter [, group ]] )
Esta función devuelve el valor promedio de la expresión proporcionada. Devuelve nulo si no existían filas disponibles.
La sentencia siguiente devuelve el promedio de edad de los estudiantes en una clase:
Para devolver el promedio de los cumpleaños de los estudiantes en una clase, utilice la sentencia siguiente:
Agregado Total.median
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.variance
Agregado Total.weightedAve
Esta función cuenta el número de filas en el grupo.
Total.count( [ filter [, group ]] )
Este ejemplo cuenta el número de estudiantes femeninos y masculinos en una clase. Es necesario crear dos elementos de datos. Establezca el primero en:
Establezca el segundo en:
Agregado Total.countDistinct
Agregado Total.sum
Esta función calcula el número de valores distintivos en el grupo o conjunto de datos. El argumento expr proporciona una expresión utilizada para agrupar los valores. La expresión hace referencia a una columna de fila de datos. Los valores nulos se cuentan como un único valor distintivo.
Total.countDistinct ( expr [, filter [, group ]] )
Número de valores distintivos en el grupo o conjunto de datos. Devuelve cero si no existían filas disponibles.
Suponga que deseamos saber el número de países distintos representados por un grupo de estudiantes. Podemos definir un elemento de datos que utilice la siguiente expresión:
En esta sentencia, row.Country es una columna que contiene el nombre o código para el país de origen del estudiante. Suponga que algunas filas contienen nulo, indicando que no sabemos el país de origen. Utilice la sentencia siguiente para excluir dichas filas del recuento:
Agregado Total.count
Esta función agregada devuelve el primer valor que aparece en un conjunto de datos. Éste es el primer valor extraído del conjunto de datos al extraer las filas utilizando el orden de ordenación definido para la Tabla o Lista.
Total.first( expr [, filter [, group ]] )
Esta función devuelve el primer valor que aparece en la secuencia de filas, o nulo si el conjunto de datos no contiene ninguna fila.
Suponga que un informe lista las transacciones para unas existencias determinadas durante un periodo de tiempo. La sentencia siguiente visualiza la compra más reciente de las existencias:
Agregado Total.isBottomNPercent
Agregado Total.max
Agregado Total.min
Esta función devuelve un booleano que indica si el valor de un campo numérico especificado es uno de los n valores más bajos.
Total.isBottomN( expr, n, [, filter [, group ]] )
Esta función devuelve true o false. Esta función devuelve true si el valor en el campo numérico se encuentra en los n valores inferiores de todos los valores de esta columna.
Suponga que una columna de informe tiene cinco filas, que contiene los valores 1, 2, 3, 4 y 5. Total.isBottomN(expr, 2) comprueba si el campo representado por expr contiene un 1 o un 2, los dos valores más bajo de la columna.
Esta función devuelve un booleano que indica si el valor de un campo numérico especificado se encuentra en el porcentaje n inferior de todos los valores de la columna.
Total.isBottomNPercent( expr, n, [, filter [, group ]] )
Esta función devuelve true o false. Esta función devuelve true si el valor en el campo se encuentra en el porcentaje n inferior de todos los valores de esta columna.
Suponga que una columna de informe tiene cinco filas, que contienen los valores 1, 2, 3, 4 y 5. Total.isBottomNPercent(expr, 60) comprueba si el campo representado por expr contiene un 1, 2 o un 3, el porcentaje del sesenta por ciento más bajo de los números en la columna.
Esta función devuelve un booleano que indica si el valor de un campo numérico especificado es uno de los valores n más altos.
Total.isTopN( expr, n, [, filter [, group ]] )
Esta función devuelve true o false. Esta función devuelve true si el valor en el campo numérico se encuentra en el n superior de todos los valores de esta columna.
Suponga que una columna de informe tiene cinco filas, que contienen los valores 1, 2, 3, 4 y 5. Total.isTopN(expr, 2) comprueba si el campo representado por expr contiene un 4 ó 5, los dos números más altos de la columna.
Esta función devuelve un booleano que indica si el valor de un campo numérico especificado se encuentra en el porcentaje n superior de todos los valores de la columna.
Total.isTopNPercent( expr, n, [, filter [, group ]] )
Esta función devuelve true o false. Esta función devuelve true si el valor en el campo se encuentra en el porcentaje n superior de todos los valores de esta columna.
Suponga que una columna de informe tiene cinco filas, que contienen los valores 1, 2, 3, 4 y 5. Total.isTopNPercent(expr, 60) comprueba si el campo representado por expr contiene un 3, 4 o 5, el porcentaje del sesenta por ciento más alto de los números en la columna.
Esta función devuelve el último valor que aparece en un conjunto de datos. Éste es el último valor extraído del conjunto de datos al extraer las filas utilizando el orden de ordenación definido para la Tabla o Lista.
Total.last( expr [, filter [, group ]] )
Esta función devuelve el último valor que aparece en la secuencia de filas, o nulo si el conjunto de datos no contiene ninguna fila.
Suponga que un informe lista las transacciones para unas existencias determinadas durante un periodo de tiempo. La sentencia siguiente visualiza la venta más reciente de las existencias:
Agregado Total.first
Agregado Total.max
Agregado Total.min
Esta función calcula el valor máximo de la expresión dada. La expresión se evalúa para cada fila y el valor máximo se mantiene. Esta función puede trabajar con número, fecha o serie.
Total.max( expr [, filter [, group ]] )
Esta función devuelve el valor máximo de la expresión dada. Devuelve nulo si no había filas disponibles.
La sentencia siguiente busca el estudiante más mayor de una clase:
Agregado Total.first
Agregado Total.isBottomNPercent
Agregado Total.min
Esta función agregada calcula el valor promedio matemático. La mitad de los valores caen por encima del promedio y la mitad por debajo.
Total.median( expr [, filter [, group ]] )
Esta función devuelve un valor promedio de la expresión dada. Devuelve nulo si no existían filas disponibles.
La sentencia siguiente devuelve el promedio de edad de los estudiantes en una clase:
Y, para devolver el promedio de los cumpleaños de los estudiantes en una clase, utilice la sentencia siguiente:
Agregado Total.ave
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.variance
Agregado Total.weightedAve
Esta función agregada calcula el valor mínimo de la expresión dada. La expresión se evalúa para cada fila y se mantiene el valor mínimo. Esta función puede funcionar con cualquier tipo simple: número, fecha o serie.
Total.min( expr [, filter [, group ]] )
Esta función devuelve el valor mínimo de la expresión dada. Devuelve nulo si no existían filas disponibles.
La sentencia siguiente devuelve la edad del estudiante más joven de una clase:
Agregado Total.first
Agregado Total.isBottomNPercent
Agregado Total.max
Esta función agregada calcula el valor de modo matemático. El modo es el valor que se produce con más frecuencia en los datos. Por ejemplo, en la secuencia {1, 2, 3, 2, 4, 7}, 2 es el modo porque aparece dos veces, mientras que todos los demás números aparecen sólo una vez. Si un conjunto de datos tiene múltiples modos, como por ejemplo en la secuencia {1,2,3,2,3}, el agregado de modo devuelve nulo.
Total.mode( expr [, filter [, group ]] )
Esta función devuelve un valor de modo de la expresión dada. Devuelve nulo si no existían filas disponibles o si los datos tienen más de un modo.
La sentencia siguiente devuelve la edad que se repite con más frecuencia de los estudiantes de una clase:
Agregado Total.ave
Agregado Total.median
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.variance
Agregado Total.weightedAve
Esta función agregada calcula un promedio móvil. El argumento expr proporciona el valor del que realizar el promedio y el argumento window proporciona el número de filas a tener en cuenta. Se realiza el promedio de las filas en el orden determinado por el contexto, normalmente el orden especificado por un orden para un elemento Lista o Tabla.
Total.movingAve( expr, window [, filter [, group ]] )
Esta función devuelve un valor promedio móvil de la expresión dada. Devuelve nulo si no existían filas disponibles.
Supongamos que un informe lista el precio diario de producto. Para visualizar el promedio móvil de ese producto durante los últimos cinco días, utilice la expresión siguiente:
Agregado Total.ave
Agregado Total.median
Agregado Total.mode
Agregado Total.stdDev
Agregado Total.variance
Agregado Total.weightedAve
Esta función examina un conjunto de valores y devuelve el valor que está en un percentil especificado de todos los valores del conjunto. Por ejemplo, es posible que desee saber qué puntuación representa el nonagésimo percentil de todas las puntuaciones de una prueba.
Este función devuelve el valor que está en un percentil especificado en el conjunto de valores analizados.
La sentencia siguiente devuelve el valor de puntuación del quincuagésimo percentil:
Si el conjunto de puntuaciones de la prueba en la columna especificada es 10, 20, 30, 40 y 50, la sentencia devolverá 30.
Esta función calcula el rango de porcentaje de un valor en un campo especificado.
percentRank( expr, filter [, group ]] )
Esta función devuelve la clasificación del porcentaje del valor en el campo especificado. El valor de retorno va de cero a uno.
La sentencia siguiente devuelve la clasificación del porcentaje de una puntuación entre todas las puntuaciones de una columna:
Si las puntuaciones en el rango de evaluación son 10, 10, 20 y 50, y la puntuación en la celda que contiene esta sentencia es 30, el valor de retorno es .5 porque la mitad de los valores están por encima de 20 y la mitad por debajo de 20.
Esta función calcula t.
percentSum( expr [, filter [, group ]] )
Esta función devuelve el porcentaje de la contribución de este valor a la suma de todos los valores en el rango.
La sentencia siguiente devuelve el porcentaje de contribución de esta cantidad de pedido a la suma de todas las cantidades de pedido:
Esta función calcula el valor dentro de un conjunto definido de valores para los que el 0%, 25%, 50%, 75% o 100% de los valores en el conjunto son mayores.
quartile( expr, quartile, [, filter [, group ]] )
Esta función devuelve el valor del conjunto especificado que cae en el cuartil especificado.
La sentencia siguiente devuelve la cantidad de pedido para la cual el 75% son más pequeños y el 25% más grande:
Esta función calcula dónde se clasifica un valor entre un conjunto de valores. El valor de clasificación va de 1 al número de valores del conjunto. Si dos valores son idénticos, tienen la misma clasificación.
rank( expr [, filter [, group ]] )
Esta función devuelve un entero que refleja la clasificación del valor y tiene un rango de 1 al número de elementos del conjunto de valores
La sentencia siguiente devuelve el rango del campo OrderAmt entre todas las cantidades de pedido de la columna OrderAmt.
Esta función calcula una cuenta de filas.
runningCount( filter [, group ]] )
Esta función devuelve la cuenta de filas.
La sentencia siguiente devuelve la cuenta para un informe:
Agregado Total.count
Agregado Total.percentRank
Esta función agregada calcula la desviación estándar estadística de una secuencia de números. La desviación estándar es una medida de la distribución de un conjunto de valores.
Total.stdDev( expr [, filter [, group ]] )
Esta función devuelve una desviación estándar de la expresión dada. Devuelve nulo si no existían filas disponibles.
Agregado Total.ave
Agregado Total.median
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.variance
Agregado Total.weightedAve
Esta función agregada calcula la suma resultante de sumar un valor para cada fila en el grupo. El valor para cada fila se calcula utilizando la expresión dada en el argumento expr. La suma se obtiene añadiendo conjuntamente todos estos valores.
Total.sum( expr [, filter [, group ]] )
Suma de la expresión dada. Devuelve cero si no existían filas disponibles.
La sentencia siguiente proporciona el total de las cantidades de pedido para un cliente:
Agregado Total.count
Agregado Total.percentRank
Esta función agregada calcula la varianza estadística de una secuencia de números. La varianza es una medida de la distribución de un conjunto de valores.
Total.variance( expr [, filter [, group ]] )
Esta función devuelve la varianza de la expresión dada. Devuelve nulo si no existían filas disponibles.
Agregado Total.ave
Agregado Total.median
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.weightedAve
Esta función agregada calcula el valor medio ponderado matemático. Si el argumento expr o el argumento weight se evalúan en un valor nulo, la fila se excluirá del promedio.
Total.weightedAve( expr, weight [, filter [, group ]] )
Esta función devuelve el valor promedio ponderado de la expresión dada. Devuelve nulo si no existían filas disponibles.
Supongamos que una aplicación de finanzas realiza el seguimiento de lotes de un producto determinado adquirido en distintos momentos. Cada lote tiene un precio de compra distinto y un número de unidades adquiridas por ese precio. La sentencia siguiente calcula el precio de compra promedio ponderado:
Agregado Total.ave
Agregado Total.median
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.variance
![]() ![]() |