Tema anteriorTema siguiente


Clase Total

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:

(balance / Total.sum( balance, Total.OVERALL ) ) * 100.0 

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:

Acerca de la agrupación y el filtrado

Todos los agregados permiten dos argumentos opcionales para indicar el filtrado y la agrupación:

Total.<función agregada> ( ..., filter, group ) 

Acerca del argumento de filtro

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:

Total.sum( row["CreditLimit"], row["Active"] == 'Y' ); 

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.

Acerca del argumento de grupo

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:

Total.sum( row["precio"] * row["cantidad"] ) 

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:

Total.sum( row.CreditLimit, null, "Customer" ); 

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

Propiedades estáticas

OVERALL

Funciones

Total.ave

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.

Sintaxis

Total.ave( expr [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve el valor promedio de la expresión proporcionada. Devuelve nulo si no existían filas disponibles.

Ejemplo

La sentencia siguiente devuelve el promedio de edad de los estudiantes en una clase:

Total.ave( row.Age ) 

Para devolver el promedio de los cumpleaños de los estudiantes en una clase, utilice la sentencia siguiente:

Total.ave( row.BirthDate ) 

Consulte también

Agregado Total.median

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.variance

Agregado Total.weightedAve

Total.count

Esta función cuenta el número de filas en el grupo.

Sintaxis

Total.count( [ filter [, group ]] )

Argumentos

Ejemplo

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:

Total.sum( row.sex == 'M' ); 

Establezca el segundo en:

Total.sum( row.sex == 'F' ); 

Consulte también

Agregado Total.countDistinct

Agregado Total.sum

Total.countDistinct

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.

Sintaxis

Total.countDistinct ( expr [, filter [, group ]] )

Argumentos

Retornos

Número de valores distintivos en el grupo o conjunto de datos. Devuelve cero si no existían filas disponibles.

Ejemplo

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:

Total.countDistinct( row.Country ) 

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:

Total.countDistinct( row.Country, row.Country != null ) 

Consulte también

Agregado Total.count

Total.first

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.

Sintaxis

Total.first( expr [, filter [, group ]] )

Argumentos

Retornos

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.

Ejemplo

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:

Total.first( row.TransDate, row.Action == 'Buy' ); 

Consulte también

Agregado Total.isBottomNPercent

Agregado Total.max

Agregado Total.min

Total.isBottomN

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.

Sintaxis

Total.isBottomN( expr, n, [, filter [, group ]] )

Argumentos

Retornos

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.

Ejemplo

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.

Consulte también

Total.isBottomNPercent

Total.isTopN

Total.isTopNPercent

Total.isBottomNPercent

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.

Sintaxis

Total.isBottomNPercent( expr, n, [, filter [, group ]] )

Argumentos

Retornos

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.

Ejemplo

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.

Consulte también

Total.isBottomN

Total.isTopN

Total.isTopNPercent

Total.isTopN

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.

Sintaxis

Total.isTopN( expr, n, [, filter [, group ]] )

Argumentos

Retornos

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.

Ejemplo

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.

Consulte también

Total.isTopNPercent

Total.isBottomN

Total.isBottomNPercent

Total.isTopNPercent

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.

Sintaxis

Total.isTopNPercent( expr, n, [, filter [, group ]] )

Argumentos

Retornos

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.

Ejemplo

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.

Consulte también

Total.isTopN

Total.isBottomN

Total.isBottomNPercent

Total.last

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.

Sintaxis

Total.last( expr [, filter [, group ]] )

Argumentos

Retornos

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.

Ejemplo

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:

Total.last( row.TransDate, row.Action == 'Sell' ); 

Consulte también

Agregado Total.first

Agregado Total.max

Agregado Total.min

Total.max

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.

Sintaxis

Total.max( expr [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve el valor máximo de la expresión dada. Devuelve nulo si no había filas disponibles.

Ejemplo

La sentencia siguiente busca el estudiante más mayor de una clase:

Total.max( row.Age ) 

Consulte también

Agregado Total.first

Agregado Total.isBottomNPercent

Agregado Total.min

Total.median

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.

Sintaxis

Total.median( expr [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve un valor promedio de la expresión dada. Devuelve nulo si no existían filas disponibles.

Ejemplo

La sentencia siguiente devuelve el promedio de edad de los estudiantes en una clase:

Total.median( row.Age ) 

Y, para devolver el promedio de los cumpleaños de los estudiantes en una clase, utilice la sentencia siguiente:

Total.median( row.BirthDate ) 

Consulte también

Agregado Total.ave

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.variance

Agregado Total.weightedAve

Total.min

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.

Sintaxis

Total.min( expr [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve el valor mínimo de la expresión dada. Devuelve nulo si no existían filas disponibles.

Ejemplo

La sentencia siguiente devuelve la edad del estudiante más joven de una clase:

Total.min( row.Age ) 

Consulte también

Agregado Total.first

Agregado Total.isBottomNPercent

Agregado Total.max

Total.mode

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.

Sintaxis

Total.mode( expr [, filter [, group ]] )

Argumentos

Retornos

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.

Ejemplo

La sentencia siguiente devuelve la edad que se repite con más frecuencia de los estudiantes de una clase:

Total.mode( row.Age ) 

Consulte también

Agregado Total.ave

Agregado Total.median

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.variance

Agregado Total.weightedAve

Total.movingAve

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.

Sintaxis

Total.movingAve( expr, window [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve un valor promedio móvil de la expresión dada. Devuelve nulo si no existían filas disponibles.

Ejemplo

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:

Total.movingAve( row.price, 5 ); 

Consulte también

Agregado Total.ave

Agregado Total.median

Agregado Total.mode

Agregado Total.stdDev

Agregado Total.variance

Agregado Total.weightedAve

Total.percentile

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.

Sintaxis

Argumentos

Retornos

Este función devuelve el valor que está en un percentil especificado en el conjunto de valores analizados.

Ejemplo

La sentencia siguiente devuelve el valor de puntuación del quincuagésimo percentil:

Total.percentile( row.TestScore, 0.5) 

Si el conjunto de puntuaciones de la prueba en la columna especificada es 10, 20, 30, 40 y 50, la sentencia devolverá 30.

Consulte también

Total.percentRank

Total.percentSum

Total.quartile

Total.percentRank

Esta función calcula el rango de porcentaje de un valor en un campo especificado.

Sintaxis

percentRank( expr, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve la clasificación del porcentaje del valor en el campo especificado. El valor de retorno va de cero a uno.

Ejemplo

La sentencia siguiente devuelve la clasificación del porcentaje de una puntuación entre todas las puntuaciones de una columna:

Total.percentRank( row.Scores ) 

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.

Consulte también

Total.percentile

Total.percentSum

Total.quartile

Total.percentSum

Esta función calcula t.

Sintaxis

percentSum( expr [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve el porcentaje de la contribución de este valor a la suma de todos los valores en el rango.

Ejemplo

La sentencia siguiente devuelve el porcentaje de contribución de esta cantidad de pedido a la suma de todas las cantidades de pedido:

Total.percentSum( row.OrderAmt ) 

Consulte también

Total.percentile

Total.percentRank

Total.quartile

Total.quartile

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.

Sintaxis

quartile( expr, quartile, [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve el valor del conjunto especificado que cae en el cuartil especificado.

Ejemplo

La sentencia siguiente devuelve la cantidad de pedido para la cual el 75% son más pequeños y el 25% más grande:

Total.quartile( row.OrderAmt, 3) 

Consulte también

Total.percentile

Total.percentRank

Total.percentSum

Total.rank

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.

Sintaxis

rank( expr [, filter [, group ]] )

Argumentos

Retornos

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

Ejemplo

La sentencia siguiente devuelve el rango del campo OrderAmt entre todas las cantidades de pedido de la columna OrderAmt.

Total.rank( row.OrderAmt ) 

Consulte también

Total.percentRank

Total.runningCount

Esta función calcula una cuenta de filas.

Sintaxis

runningCount( filter [, group ]] )

Argumentos

Retornos

Esta función devuelve la cuenta de filas.

Ejemplo

La sentencia siguiente devuelve la cuenta para un informe:

Total.runningCount( ) 

Consulte también

Agregado Total.count

Agregado Total.percentRank

Total.stdDev

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.

Sintaxis

Total.stdDev( expr [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve una desviación estándar de la expresión dada. Devuelve nulo si no existían filas disponibles.

Consulte también

Agregado Total.ave

Agregado Total.median

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.variance

Agregado Total.weightedAve

Total.sum

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.

Sintaxis

Total.sum( expr [, filter [, group ]] )

Argumentos

Retornos

Suma de la expresión dada. Devuelve cero si no existían filas disponibles.

Ejemplo

La sentencia siguiente proporciona el total de las cantidades de pedido para un cliente:

Total.sum( row.OrderAmt ) 

Consulte también

Agregado Total.count

Agregado Total.percentRank

Total.variance

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.

Sintaxis

Total.variance( expr [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve la varianza de la expresión dada. Devuelve nulo si no existían filas disponibles.

Consulte también

Agregado Total.ave

Agregado Total.median

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.weightedAve

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.

Sintaxis

Total.weightedAve( expr, weight [, filter [, group ]] )

Argumentos

Retornos

Esta función devuelve el valor promedio ponderado de la expresión dada. Devuelve nulo si no existían filas disponibles.

Ejemplo

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:

Total.weightedAve( row.purchasePrice, row.shareCount ) 

Consulte también

Agregado Total.ave

Agregado Total.median

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.variance


(c) Copyright Actuate Corporation 2006

Tema anteriorTema siguiente