Calculando totais e outros agregados (Reporting Services)

Em uma região de dados Tablix, é possível exibir totais agregados de um conjunto de dados de relatório, de uma região de dados ou de um grupo. É possível usar a agregação padrão fornecida pelo comando Adicionar Total e usar o escopo padrão. Como alternativa, é possível especificar uma função de agregação diferente das funções internas ou especificar um escopo diferente.

Para personalizar um cálculo de agregação, use variáveis de grupo junto com código personalizado Para obter mais informações, consulte Usando variáveis de grupo no Reporting Services 2008 para agregação personalizada.

Entendendo o comando Adicionar Totais

Para exibir totais gerais e subtotais de grupos da região de dados Tablix, use o comando de atalho Adicionar Total. O comando Adicionar Total é contextual. Para uma célula na área do grupo de linhas, o comando Adicionar Total adiciona automaticamente uma linha fora do grupo para totais. Para uma célula na área do grupo de colunas, o comando Adicionar Total adiciona automaticamente uma coluna fora do grupo para totais. Para uma célula na área do corpo que contém uma expressão de campo numérico, o comando Adicionar Total fornece a opção de adicionar um total a uma linha ou a uma coluna. Para obter mais informações sobre como usar o comando Adicionar Total, consulte Como adicionar um total a um grupo ou uma região de dados Tablix (Reporting Services).

Por padrão, o comando Adicionar Total usa a função Sum. No entanto é possível alterar a função Sum para uma função interna diferente e executar uma agregação diferente para um escopo. Também é possível escrever suas próprias expressões para calcular valores agregados para um escopo relativo a outro escopo. Por exemplo, você pode calcular a porcentagem de um valor de grupo relativo ao conjunto de dados completo. Para obter mais informações sobre como usar outras funções internas para executar agregações, consulte Usando funções internas de relatório e de agregação em expressões (Reporting Services). Para obter uma lista de funções internas, consulte Usando funções internas de relatório e de agregação em expressões (Reporting Services).

Entendendo o escopo padrão

Conforme uma região de dados Tablix é processada e renderizada, o Designer de Relatórios avalia o valor de cada célula Tablix no contexto do escopo da célula. Quando uma célula está em uma linha associada a um grupo de linhas ou de colunas, ela pode pertencer a vários grupos. O conjunto de grupos aos quais uma célula pertence, a região de dados ou o conjunto de dados para o qual uma expressão é avaliada é chamado de escopo. O escopo padrão é definido pelo grupo de linhas e colunas interno ao qual a célula pertence. Indicações visuais ajudam a identificar os grupos dos quais uma célula selecionada é membro. Para obter mais informações, consulte Compreendendo as células, linhas e colunas da região de dados Tablix.

Para obter um exemplo de um escopo padrão, a figura a seguir tem um grupo de linhas baseado em data, um grupo de linhas filho baseado em ordem e um grupo de detalhes.

Modo de design: Total geral em tabela básica

Esta figura mostra uma expressão de campo para Quantidade e LineTotal em células de corpo Tablix em várias linhas. A lista a seguir descreve o escopo padrão destas expressões de campo em cada linha:

  • Linha 1. Esta linha exibe rótulos de colunas que são texto estático. O escopo padrão é a região de dados. A linha é repetida só uma vez e às vezes é chamada de linha de cabeçalho.

  • Linha 2. Esta linha exibe dados de detalhes, indicados pelo indicador da linha de detalhes (Identificador de linha com 3 linhas paralelas para linha de detalhes). O escopo padrão de [Qty] é o grupo de detalhes, que são os dados no conjunto de dados associados a essa região de dados após a aplicação de todo o conjunto de dados, região de dados e filtros de grupo. Esta linha é repetida uma vez por linha no conjunto de resultados da consulta do conjunto de dados. O valor [Qty] exibe os dados de detalhes do conjunto de dados.

  • Linha 3. Esta linha exibe valores agregados. O escopo padrão de [Sum(Qty)] é o grupo de linhas filho Order. A linha é repetida uma vez por valor de número de pedido exclusivo. O valor [Sum (Qty)] exibe a soma agregada de cada número de pedido.

  • Linha 4. Esta linha exibe valores agregados. O escopo padrão de [Sum (Qty)] é o grupo de linhas pai Date. A linha é repetida uma vez por valor de data exclusivo. O valor [Sum (Qty)] exibe a soma agregada de cada data.

  • Linha 5. Esta linha exibe valores agregados. O escopo padrão de [Sum (Qty)] é a região de dados. A linha é repetida só uma vez e às vezes é chamada de linha de rodapé. O valor [Sum (Qty)] exibe a soma agregada da região de dados.

Para obter mais informações sobre contexto e escopo, consulte Usando funções internas de relatório e de agregação em expressões (Reporting Services). Para obter mais informações sobre como interpretar indicações visuais em regiões de dados Tablix, consulte Compreendendo as células, linhas e colunas da região de dados Tablix.

Especificando cálculos agregados com escopos nomeados

Para especificar um escopo diferente do escopo padrão, especifique um escopo nomeado. Um escopo nomeado inclui o nome do conjunto de dados, da região de dados ou do grupo. Como as expressões são contextuais, o escopo nomeado especificado deve ser válido para a função interna. Cada função interna especifica quais escopos são válidos como um parâmetro. Para obter mais informações, consulte o tópico de referência da função específica em Usando funções internas de relatório e de agregação em expressões (Reporting Services).

Para obter um exemplo de como alterar o escopo padrão para um escopo nomeado, assuma que um relatório tem as seguintes estruturas de dados:

  • Um conjunto de dados de relatório denominado Sales.

  • Uma região de dados de tabela denominada Tablix1 e essa região tem os seguintes grupos:

    • Um grupo de linhas pai denominado Categoria com um grupo filho denominado Subcat.

    • Um grupo de colunas pai denominado Geography com um grupo filho denominado CountryRegion.

Para este relatório, você usa o comando Adicionar Total para adicionar totais a várias células. O relatório resultante pode ser semelhante à figura a seguir.

Matriz, linha aninhada e grupos de colunas com totais

Nesta figura, uma das células foi selecionada. Para esta célula selecionada, os colchetes do indicador do grupo laranja mostram as associações de grupo internas: o grupo Category e o grupo CountryRegion. Essas associações de grupo internas definem o escopo padrão dessa célula. (Para a célula selecionada, há também dois colchetes de grupo cinza que mostram grupos: o grupo de linhas Subcat e o grupo de colunas Geography. Grupos marcados com um colchete de grupo cinza são grupos externos do grupo interno selecionado ou não estão no escopo da célula selecionada.)

Essa célula selecionada tem a expressão: [Sum(LineTotal)]. Com base no escopo e na expressão de célula, o relatório renderizado exibirá o valor da caixa de texto como a soma de [LineTotal] para cada valor de Subcat específico dentro de cada valor de CountryRegion específico.

Sem substituir a função Sum na expressão, é possível alterar o escopo dessa célula das seguintes maneiras:

  • Alterar o escopo para que seja o conjunto de dados Sales.   Por exemplo, para especificar o total do conjunto de dados, a expressão deve ser alterada para =Sum(Fields!LineTotal.Value, "Sales").

  • Alterar o escopo para que seja toda a região de dados Tablix1.   Por exemplo, para calcular a porcentagem de contribuição de um grupo para a região de dados total, a expressão deve ser alterada para =Sum(Fields!LineTotal.Value)/Sum((Fields! LineTotal.Value),"Tablix1").

    Nesta nova expressão, o numerador, Sum(Fields! LineTotal.Value), é a soma dos totais da linha para cada categoria. O denominador, Sum((Fields! LineTotal.Value), "Tablix1"), é a soma dos totais de linha da região de dados. O resultado é a porcentagem que cada categoria representa da região de dados total.

    Na célula selecionada, é possível especificar um dos escopos de grupo a seguir para a função Sum: CountryRegion, Geography ou Category. Não é possível especificar o escopo do grupo Subcat, porque a célula não está em uma linha associada ao grupo Subcat.

    ObservaçãoObservação

    É possível especificar apenas um único escopo para uma função de agregação. Não é possível especificar "Category" e "Geography" ao mesmo tempo como escopos para a expressão de denominador. A especificação de vários escopos não é suportada.

Para obter uma lista de funções internas, consulte Usando funções internas de relatório e de agregação em expressões (Reporting Services).

Exemplos de como especificar diferentes escopos

A tabela a seguir fornece exemplos de expressões que usam o escopo padrão, o escopo da região de dados e o escopo do conjunto de dados. Os exemplos assumem que há uma região de dados Tablix denominada "Tablix1", um conjunto de dados denominado "Sales" com um campo denominado "LineTotal" que contém o total de um item de linha em um pedido de vendas.

Descrição

Expressão

Soma de totais de itens de linha do escopo atual.

=Sum(Field!LineTotal.Value)

Porcentagem de (a soma de totais de itens de linha do escopo atual)/(a soma de totais de linhas da região de dados).

Esse valor é formatado usando o formato de exibição padrão para a caixa de texto.

=Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Tablix1")

Quando colocado em uma linha associada ao grupo CountryRegion:

Porcentagem de (a soma de totais de itens de linha do grupo CountryRegion)/(a soma de totais de linhas do grupo Geography).

Esse valor é formatado usando o formato de exibição padrão da caixa de texto que deve ser definido como P1 para o formulário #. #%.

=Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Geography")

Porcentagem de (a soma de totais de itens de linha do escopo atual)/(a soma de totais de linhas da região de dados).

Esse valor é formatado usando IIF de forma que o resultado será em branco se não houver nenhum total de item de linha no grupo atual.

=IIF(Sum(Field!LineTotal.Value)<=0,"", FormatPercent(Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Tablix1"),1)

Porcentagem de (a soma de totais de itens de linha do escopo atual)/(a soma de totais de itens de linha do conjunto de dados).

Esse valor é formatado usando FormatPercent com a especificação de uma casa decimal.

="Percentage contributing to all sales: " & FormatPercent(Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Sales"),1)

Suprimindo valores nulos ou zeros em uma célula

Para muitos relatórios, cálculos com escopo de grupos podem criar muitas células que têm valores nulos ou zeros (0). Para reduzir a desordem em relatórios, adicione uma expressão para retornar brancos se o valor agregado for 0. Para obter mais informações, consulte "Exemplos que suprimem valores nulos ou zeros" em Exemplos de expressões (Reporting Services).

Histórico de alterações

Conteúdo atualizado

Um link foi adicionado para agregação personalizada.