Tópico AnteriorPróximo Tópico


Classe Total

A classe Total existe como um portador para as funções agregar. A classe Total contém uma série de funções para agregar. Essas funções são extensões BIRT para JavaScript que resumem um conjunto de linhas. O Mecanismo de Relatórios BIRT implementa uma função nas duas fases a seguir:

BIRT regrava qualquer script que contiver um agregado, criando um script revisado que executa as duas fases. O único momento em que é importante estar ciente desse processo é ao depurar uma expressão que contiver um agregado. Considere o exemplo da exibição de um valor no rodapé de um grupo, em que o valor é uma percentagem do total de todas as contas. As seguintes instruções executam essa ação:

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

No exemplo precedente, Total.OVERALL faz BIRT calcular a soma agregada de todas as linhas, mesmo que a expressão apareça em um total de grupo. Para calcular a expressão no exemplo precedente, BIRT executa um passo para calcular o saldo total e um segundo passo para calcular o valor de cada conta.

As regras gerais para a classe Total são:

Sobre Agrupamento e Filtragem

Todos os agregados permitem dois argumentos opcionais para indicar filtragem e agrupamento:

Total.<aggregate function> ( ..., filter, group ) 

Sobre Argumento de Filtro

Um argumento de filtro fornece uma expressão booleana que BIRT avalia a cada linha. BIRT apenas considera linhas que correspondam ao filtro ao calcular o agregado. Por exemplo, um relatório poderia somar os limites de crédito de clientes ativos para determinar a exposição máxima de crédito.

A expressão é executada na fase de transformação de dados. Ela pode acessar colunas na linha, parâmetros, funções definidas pelo usuário e outros recursos, conforme definido na descrição de contexto acima. Por exemplo:

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

Um argumento de filtro nulo ou indefinido ou Total.NO_FILTER significa que nenhum filtro é fornecido. Se o aplicativo não fornecer nenhum filtro, o filtro será padronizado como indefinido. Se você fornecer um argumento de grupo, deverá fornecer null ou Total.NO_FILTER para indicar nenhuma filtragem.

Sobre Argumento de Grupo

Relatórios freqüentemente precisam exibir totais para o nível atual de agrupamento. Por exemplo, suponha que um relatório seja agrupado por clientes e que os pedidos e os registros de detalhes representem itens de linha nos pedidos. Cada item de linha possui um preço unitário e uma quantidade, como no seguinte agregado:

Total.sum( row["price"] * row["quantity"] ) 

Esse agregado soma valores sobre o grupo atual. Se colocado no rodapé, ele exibe a soma de itens de linha para esse pedido. Se colocado no rodapé do cliente, ele exibe a soma de todos os itens de linha para todos os pedidos desse cliente. E, se colocado no rodapé do relatório, ele exibe a soma de todos os itens de linha para todos os clientes.

Às vezes, o aplicativo precisa acessar um total a partir de um nível de agrupamento diferente. Por exemplo, talvez você queira saber o valor total de um pedido como uma porcentagem de todos os pedidos para o cliente. Nesse caso, você deve acessar o total de um grupo diferente do grupo atual. Isso pode ser feito utilizando o argumento de agrupamento:

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

O argumento de grupo pode ser um dos seguintes:

Os exemplos a seguir ilustram esses tipos de argumentos de grupo:

Total.sum( row["myCol"] null, null ); // Grupo atual 
Total.sum( row["myCol"], null, "Customer" ); // Por nome 
Total.sum( row["myCol"], null, "row['custID']" ); // Por chave de grupo 
Total.sum( row["myCol"], null, 1 ); // Por índice de grupo 
Total.sum( row["myCol"], null, "Overall" ); // Totais gerais 
Total.sum( row["myCol"], null, 0 ); // Totais gerais 

Você deve fornecer o argumento de filtro ao utilizar o argumento de agrupamento. Se você não precisa de um filtro, forneça null como o valor do filtro. O índice de grupo não é colocado entre aspas. Ele deve ser especificado como um número. Isto é, 1 significa o grupo no nível 1; enquanto que "1" significa o grupo denominado "1".

Propriedades Estáticas

OVERALL

Funções

Total.ave

Essa função agregada calcula o valor médio matemático. Se a expressão exprimir um número, essa função retorna a média desses números. Se a expressão exprimir uma data, essa função retorna a data média.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o valor médio da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.

Exemplo

A seguinte instrução retorna a idade média de alunos em uma classe:

Total.ave( row.Age ) 

Para retornar o aniversário médio de alunos em uma classe, utilize a seguinte instrução:

Total.ave( row.BirthDate ) 

Consulte também

Agregado Total.median

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.variance

Agregado Total.weightedAve

Total.count

Esta função conta o número de linhas dentro do grupo.

Sintaxe

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

Argumentos

Exemplo

Este exemplo conta o número de alunos e de alunas em uma classe. Ele é necessário para criar dois itens de dados. Configure o primeiro como:

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

Configure o segundo como:

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

Consulte também

Agregado Total.countDistinct

Agregado Total.sum

Total.countDistinct

Esta função calcula o número de valores distintos dentro do grupo ou conjunto de dados. O argumento expr fornece uma expressão utilizada para agrupar valores. A expressão refere-se a uma coluna de linha de dados. Valores nulos são contados como um valor distinto.

Sintaxe

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

Argumentos

Retornos

O número de valores distintos dentro do grupo ou conjunto de dados. Retorna zero se nenhuma linha estiver disponível.

Exemplo

Suponha que desejemos saber o número de países diferentes representados por um grupo de alunos. Podemos definir um item de dados que utilize a seguinte expressão:

Total.countDistinct( row.Country ) 

Nesta instrução, row.Country é uma coluna que contém o nome ou código do país de origem do aluno. Suponha que algumas linhas contenham null, significando que não sabemos o país de origem. Utilize a seguinte instrução para excluir essas linhas da contagem:

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

Consulte também

Agregado Total.count

Total.first

Esta função agregar retorna o primeiro valor que aparece em um conjunto de dados. Este é o primeiro valor trazido do conjunto de dados ao buscar linhas utilizando a ordem de classificação definida para a Tabela ou Lista.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o primeiro valor que aparece em uma seqüência de linhas ou nulo se o conjunto de dados não contiver nenhuma linha.

Exemplo

Suponha que um relatório liste transações para um determinado estoque em um período de tempo. A instrução a seguir exibe a compra mais cedo do estoque:

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

Consulte também

Agregado Total.isBottomNPercent

Agregado Total.max

Agregado Total.min

Total.isBottomN

A função retorna um booleano que indica se o valor de um campo numérico especificado é um dos valores n mais baixos.

Sintaxe

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

Argumentos

Retornos

Esta função retorna verdadeiro ou falso. Esta função retorna verdadeiro se o valor no campo numérico estiver no n inferior de todos os valores nessa coluna.

Exemplo

Suponha que uma coluna do relatório tenha cinco linhas, contendo os valores 1, 2, 3, 4 e 5. Total.isBottomN(expr, 2) testa se o campo representado por expr contém um 1 ou um 2, os dois números mais baixos na coluna.

Consulte também

Total.isBottomNPercent

Total.isTopN

Total.isTopNPercent

Total.isBottomNPercent

Esta função retorna um booleano que indica se o valor de um campo numérico especificado estiver na porcentagem n inferior de todos os valores nessa coluna.

Sintaxe

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

Argumentos

Retornos

Esta função retorna verdadeiro ou falso. Esta função retorna verdadeiro se o valor no campo estiver na porcentagem n inferior de todos os valores nessa coluna.

Exemplo

Suponha que uma coluna do relatório tenha cinco linhas, contendo os valores 1, 2, 3, 4 e 5. Total.isBottomNPercent(expr, 60) testa se o campo representado por expr contém um 1, um 2 ou um 3, os sessenta por cento dos números mais baixos na coluna.

Consulte também

Total.isBottomN

Total.isTopN

Total.isTopNPercent

Total.isTopN

A função retorna um booleano que indica se o valor de um campo numérico especificado é um dos valores n mais altos.

Sintaxe

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

Argumentos

Retornos

Esta função retorna verdadeiro ou falso. Esta função retorna verdadeiro se o valor no campo numérico estiver no n superior de todos os valores nessa coluna.

Exemplo

Suponha que uma coluna do relatório tenha cinco linhas, contendo os valores 1, 2, 3, 4 e 5. Total.isTopN(expr, 2) testa se o campo representado por expr contém um 4 ou 5, os dois números mais altos na coluna.

Consulte também

Total.isTopNPercent

Total.isBottomN

Total.isBottomNPercent

Total.isTopNPercent

Esta função retorna um booleano que indica se o valor de um campo numérico especificado estiver na porcentagem n superior de todos os valores nessa coluna.

Sintaxe

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

Argumentos

Retornos

Esta função retorna verdadeiro ou falso. Esta função retorna verdadeiro se o valor no campo estiver na porcentagem n superior de todos os valores nessa coluna.

Exemplo

Suponha que uma coluna do relatório tenha cinco linhas, contendo os valores 1, 2, 3, 4 e 5. Total.isTopNPercent(expr, 60) testa se o campo representado por expr contém um 3, 4 ou 5, os sessenta por cento dos números mais altos na coluna.

Consulte também

Total.isTopN

Total.isBottomN

Total.isBottomNPercent

Total.last

Esta função retorna o último valor que aparece em um conjunto de dados. Este é o último valor trazido do conjunto de dados ao buscar linhas utilizando a ordem de classificação definida para a Tabela ou Lista.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o último valor que aparece em uma seqüência de linhas ou nulo se o conjunto de dados não contiver nenhuma linha.

Exemplo

Suponha que um relatório liste transações para um determinado estoque em um período de tempo. A instrução a seguir exibe a venda mais recente do estoque:

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

Consulte também

Agregado Total.first

Agregado Total.max

Agregado Total.min

Total.max

Esta função calcula o valor máximo da expressão especificada. A expressão é avaliada para cada linha e o valor máximo é mantido. Esta função pode trabalhar com número, data ou cadeia.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o valor máximo da expressão especificada. Ela retorna nulo se nenhuma linha estiver disponível.

Exemplo

A seguinte instrução localiza o aluno mais antigo dentro de uma classe:

Total.max( row.Age ) 

Consulte também

Agregado Total.first

Agregado Total.isBottomNPercent

Agregado Total.min

Total.median

Essa função agregada calcula o valor médio matemático. Metade dos valores ficam acima da média e metade abaixo.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o valor mediano da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.

Exemplo

A seguinte instrução retorna a idade mediana de alunos em uma classe:

Total.median( row.Age ) 

E, para retornar o aniversário mediano de alunos em uma classe, utilize a seguinte instrução:

Total.median( row.BirthDate ) 

Consulte também

Agregado Total.ave

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.variance

Agregado Total.weightedAve

Total.min

Esta função agregada calcula o valor mínimo da expressão especificada. A expressão é avaliada para cada linha e o valor mínimo é mantido. Esta função pode trabalhar com qualquer tipo simples: número, data ou cadeia.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o valor mínimo da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.

Exemplo

A seguinte instrução retorna a idade do aluno mais jovem em um classe:

Total.min( row.Age ) 

Consulte também

Agregado Total.first

Agregado Total.isBottomNPercent

Agregado Total.max

Total.mode

Essa função agregada calcula o valor do modo matemático. O modo é o valor que ocorre mais freqüentemente nos dados. Por exemplo, na seqüência {1, 2, 3, 2, 4, 7}, 2 é o modo porque ele aparece duas vezes, enquanto todos os outros números aparecem apenas uma vez. Se um conjunto de dados possui vários modos, como na seqüência {1,2,3,2,3}, o modo agregado retorna nulo.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o valor de modo da expressão especificada. Retorna nulo se nenhuma linha estiver disponível ou se os dados tiverem mais de um modo.

Exemplo

A seguinte instrução retorna a idade que ocorre mais freqüentemente de alunos em uma classe:

Total.mode( row.Age ) 

Consulte também

Agregado Total.ave

Agregado Total.median

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.variance

Agregado Total.weightedAve

Total.movingAve

Essa função agregada calcula uma média em movimento. O argumento expr fornece o valor para a média e o argumento window fornece o número de linhas a ser considerado. É calculada a média das linhas na ordem determinada pelo contexto, geralmente a ordem especificada por uma classificação para um elemento de Lista ou de Tabela.

Sintaxe

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

Argumentos

Retornos

Esta função retorna um valor médio em movimento da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.

Exemplo

Suponha que um relatório liste o preço diário de um estoque. Para exibir a média em movimento desse estoque para os últimos cinco dias, utilize a seguinte instrução:

Total.movingAve( row.price, 5 ); 

Consulte também

Agregado Total.ave

Agregado Total.median

Agregado Total.mode

Agregado Total.stdDev

Agregado Total.variance

Agregado Total.weightedAve

Total.percentile

Esta função examina um conjunto de valores e retorna o valor que está em algum percentil especificado de todos os valores no conjunto. Por exemplo, você pode desejar saber qual pontuação representa o 90º percentil de todas as pontuações em um teste.

Sintaxe

Argumentos

Retornos

Esta função retorna o valor que está no percentil especificado no conjunto de valores analisados.

Exemplo

A seguinte instrução retorna o 50º valor de percentil de pontuação:

Total.percentile( row.TestScore, 0.5) 

Se o conjunto de pontuações de teste na coluna especificada for 10, 20, 30, 40 e 50, essa instrução retornaria 30.

Consulte também

Total.percentRank

Total.percentSum

Total.quartile

Total.percentRank

Esta função calcula a posição de porcentagem de um valor em um campo especificado.

Sintaxe

percentRank( expr, filter [, group ]] )

Argumentos

Retornos

Esta função retorna a posição de porcentagem do valor no campo especificado. O valor de retorno estende-se de zero a um.

Exemplo

A seguinte instrução retorna a posição de porcentagem de uma pontuação entre todas as pontuações em uma coluna:

Total.percentRank( row.Scores ) 

Se as pontuações no intervalo de avaliação forem 10, 10, 20 e 50 e a pontuação na célula que contém essa instrução for 30, o valor de retorno será .5 porque metade dos valores está acima de 20 e metade está abaixo de 20.

Consulte também

Total.percentile

Total.percentSum

Total.quartile

Total.percentSum

Esta função calcula t.

Sintaxe

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

Argumentos

Retornos

Esta função retorna a porcentagem da contribuição desse valor para a soma de todos os valores no intervalo.

Exemplo

A seguinte instrução retorna a porcentagem de contribuição desse valor de pedido para a soma de todos os valores de pedido:

Total.percentSum( row.OrderAmt ) 

Consulte também

Total.percentile

Total.percentRank

Total.quartile

Total.quartile

Essa função calcula o valor dentro de um conjunto definido de valores para o qual 0%, 25%, 50%, 75% ou 100% dos valores no conjunto são maiores.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o valor dentro do conjunto especificado que cai no quartil especificado.

Exemplo

A seguinte instrução retorna o valor de pedido para o qual 75% são menores e 25% são maiores:

Total.quartile( row.OrderAmt, 3) 

Consulte também

Total.percentile

Total.percentRank

Total.percentSum

Total.rank

Essa função calcula onde um valor se posiciona entre um conjunto de valores. O valor de posição estende-se de 1 até o número de valores no conjunto. Se dois valores forem idênticos, eles terão a mesma posição.

Sintaxe

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

Argumentos

Retornos

Esta função retorna um inteiro que reflete a posição de valor e tem um intervalo de 1 até o número de itens no conjunto de valores.

Exemplo

A seguinte instrução retorna a posição do campo OrderAmt entre todos os valores de pedido na coluna OrderAmt.

Total.rank( row.OrderAmt ) 

Consulte também

Total.percentRank

Total.runningCount

Esta função calcula uma contagem de linhas em execução.

Sintaxe

runningCount( filter [, group ]] )

Argumentos

Retornos

Esta função retorna uma contagem de linhas em execução.

Exemplo

A seguinte instrução retorna a contagem em execução para um relatório:

Total.runningCount( ) 

Consulte também

Agregado Total.count

Agregado Total.percentRank

Total.stdDev

Esta função agregada calcula o desvio padrão estatístico de uma seqüência de números. O desvio padrão é uma medida da difusão de um conjunto de valores.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o desvio padrão da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.

Consulte também

Agregado Total.ave

Agregado Total.median

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.variance

Agregado Total.weightedAve

Total.sum

Esta função agregada calcula a soma resultante da adição de um valor para cada linha no grupo. O valor para cada linha é calculado utilizando a expressão especificada no argumento expr. A soma é obtida adicionando todos esses valores juntos.

Sintaxe

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

Argumentos

Retornos

A soma da expressão especificada. Retorna zero se nenhuma linha estiver disponível.

Exemplo

A seguinte instrução totaliza os valores de pedido para um cliente:

Total.sum( row.OrderAmt ) 

Consulte também

Agregado Total.count

Agregado Total.percentRank

Total.variance

Esta função agregada calcula a variação estatística de uma seqüência de números. A variação é uma medida da difusão de um conjunto de valores.

Sintaxe

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

Argumentos

Retornos

Esta função retorna a variação da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.

Consulte também

Agregado Total.ave

Agregado Total.median

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.weightedAve

Total.weightedAve

Essa função agregada calcula o valor da média ponderada matemática. Se os argumentos expr ou weight avaliam como nulo, a linha é excluída da média.

Sintaxe

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

Argumentos

Retornos

Esta função retorna o valor da média ponderada da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.

Exemplo

Suponha que um aplicativo financeiro rastreie lotes de um determinado estoque comprado em momentos diferentes. Cada lote possui um preço de compra diferente e um número de partes compradas nesse preço. A seguinte instrução calcula o preço de compra em média ponderada:

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

Consulte também

Agregado Total.ave

Agregado Total.median

Agregado Total.mode

Agregado Total.movingAve

Agregado Total.stdDev

Agregado Total.variance


(c) Direitos Autorais Actuate Corporation 2006

Tópico AnteriorPróximo Tópico