![]() ![]() |
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:
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:
Todos os agregados permitem dois argumentos opcionais para indicar filtragem e agrupamento:
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:
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.
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:
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:
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".
OVERALL
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.
Total.ave( expr [, filter [, group ]] )
Esta função retorna o valor médio da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.
A seguinte instrução retorna a idade média de alunos em uma classe:
Para retornar o aniversário médio de alunos em uma classe, utilize a seguinte instrução:
Agregado Total.median
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.variance
Agregado Total.weightedAve
Esta função conta o número de linhas dentro do grupo.
Total.count( [ filter [, group ]] )
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:
Configure o segundo como:
Agregado Total.countDistinct
Agregado Total.sum
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.
Total.countDistinct ( expr [, filter [, group ]] )
O número de valores distintos dentro do grupo ou conjunto de dados. Retorna zero se nenhuma linha estiver disponível.
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:
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:
Agregado Total.count
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.
Total.first( expr [, filter [, group ]] )
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.
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:
Agregado Total.isBottomNPercent
Agregado Total.max
Agregado Total.min
A função retorna um booleano que indica se o valor de um campo numérico especificado é um dos valores n mais baixos.
Total.isBottomN( expr, n, [, filter [, group ]] )
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.
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.
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.
Total.isBottomNPercent( expr, n, [, filter [, group ]] )
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.
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.
A função retorna um booleano que indica se o valor de um campo numérico especificado é um dos valores n mais altos.
Total.isTopN( expr, n, [, filter [, group ]] )
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.
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.
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.
Total.isTopNPercent( expr, n, [, filter [, group ]] )
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.
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.
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.
Total.last( expr [, filter [, group ]] )
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.
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:
Agregado Total.first
Agregado Total.max
Agregado Total.min
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.
Total.max( expr [, filter [, group ]] )
Esta função retorna o valor máximo da expressão especificada. Ela retorna nulo se nenhuma linha estiver disponível.
A seguinte instrução localiza o aluno mais antigo dentro de uma classe:
Agregado Total.first
Agregado Total.isBottomNPercent
Agregado Total.min
Essa função agregada calcula o valor médio matemático. Metade dos valores ficam acima da média e metade abaixo.
Total.median( expr [, filter [, group ]] )
Esta função retorna o valor mediano da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.
A seguinte instrução retorna a idade mediana de alunos em uma classe:
E, para retornar o aniversário mediano de alunos em uma classe, utilize a seguinte instrução:
Agregado Total.ave
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.variance
Agregado Total.weightedAve
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.
Total.min( expr [, filter [, group ]] )
Esta função retorna o valor mínimo da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.
A seguinte instrução retorna a idade do aluno mais jovem em um classe:
Agregado Total.first
Agregado Total.isBottomNPercent
Agregado Total.max
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.
Total.mode( expr [, filter [, group ]] )
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.
A seguinte instrução retorna a idade que ocorre mais freqüentemente de alunos em uma classe:
Agregado Total.ave
Agregado Total.median
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.variance
Agregado Total.weightedAve
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.
Total.movingAve( expr, window [, filter [, group ]] )
Esta função retorna um valor médio em movimento da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.
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:
Agregado Total.ave
Agregado Total.median
Agregado Total.mode
Agregado Total.stdDev
Agregado Total.variance
Agregado Total.weightedAve
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.
Esta função retorna o valor que está no percentil especificado no conjunto de valores analisados.
A seguinte instrução retorna o 50º valor de percentil de pontuação:
Se o conjunto de pontuações de teste na coluna especificada for 10, 20, 30, 40 e 50, essa instrução retornaria 30.
Esta função calcula a posição de porcentagem de um valor em um campo especificado.
percentRank( expr, filter [, group ]] )
Esta função retorna a posição de porcentagem do valor no campo especificado. O valor de retorno estende-se de zero a um.
A seguinte instrução retorna a posição de porcentagem de uma pontuação entre todas as pontuações em uma coluna:
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.
Esta função calcula t.
percentSum( expr [, filter [, group ]] )
Esta função retorna a porcentagem da contribuição desse valor para a soma de todos os valores no intervalo.
A seguinte instrução retorna a porcentagem de contribuição desse valor de pedido para a soma de todos os valores de pedido:
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.
quartile( expr, quartile, [, filter [, group ]] )
Esta função retorna o valor dentro do conjunto especificado que cai no quartil especificado.
A seguinte instrução retorna o valor de pedido para o qual 75% são menores e 25% são maiores:
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.
rank( expr [, filter [, group ]] )
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.
A seguinte instrução retorna a posição do campo OrderAmt entre todos os valores de pedido na coluna OrderAmt.
Esta função calcula uma contagem de linhas em execução.
runningCount( filter [, group ]] )
Esta função retorna uma contagem de linhas em execução.
A seguinte instrução retorna a contagem em execução para um relatório:
Agregado Total.count
Agregado Total.percentRank
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.
Total.stdDev( expr [, filter [, group ]] )
Esta função retorna o desvio padrão da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.
Agregado Total.ave
Agregado Total.median
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.variance
Agregado Total.weightedAve
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.
Total.sum( expr [, filter [, group ]] )
A soma da expressão especificada. Retorna zero se nenhuma linha estiver disponível.
A seguinte instrução totaliza os valores de pedido para um cliente:
Agregado Total.count
Agregado Total.percentRank
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.
Total.variance( expr [, filter [, group ]] )
Esta função retorna a variação da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.
Agregado Total.ave
Agregado Total.median
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.stdDev
Agregado 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.
Total.weightedAve( expr, weight [, filter [, group ]] )
Esta função retorna o valor da média ponderada da expressão especificada. Retorna nulo se nenhuma linha estiver disponível.
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:
Agregado Total.ave
Agregado Total.median
Agregado Total.mode
Agregado Total.movingAve
Agregado Total.stdDev
Agregado Total.variance
![]() ![]() |