Usando funções internas de relatório e de agregação em expressões (Reporting Services)

O Reporting Services fornece funções internas para uso em expressões para calcular dados de agregação em conjuntos de dados, regiões de dados e grupos, e para recuperar outros valores de dados, como o primeiro ou o último valor em uma página de relatório. A função de agregação padrão para campos numéricos é SUM. Na caixa de diálogo Expressão, selecione a categoria Agregação em Funções Comuns para escolher uma função diferente.

Como os dados e o layout do relatório são combinados em tempo de execução, o processador de relatório determina o escopo padrão para cada referência de função em uma expressão. O escopo padrão pode ser um conjunto de dados, uma região de dados, um grupo Tablix (pai, filho, adjacente ou recursivo), a interseção de uma linha do Tablix e do grupo de colunas ou um grupo de gráficos (série, categoria, valor). Para a maioria das funções, também é possível especificar um escopo na chamada da função que seja diferente do escopo padrão. Para determinar os escopos válidos para uma função, consulte o tópico de referência da função individual. Para obter exemplos, consulte Calculando totais e outros agregados (Reporting Services).

A tabela a seguir lista as categorias de funções internas que recebem suporte do Reporting Services:

  • Calculando agregações

  • Calculando valores de execução

  • Recuperando contagens de linhas

  • Recuperando valores dependentes de classificação

  • Recuperando agregações do servidor

  • Recuperando nível recursivo

  • Testando para escopo

Compreendendo o escopo

No Reporting Services, o escopo do termo pode especificar conceitos diferentes dependendo do contexto. A lista a seguir descreve os diversos conceitos:

  • Escopo para itens de relatório no processamento do relatório. Quando os dados e o layout do relatório são combinados em tempo de execução, cada item de relatório é processado. Uma região de dados do Tablix é processada externamente em conjuntos ainda mais restritivos de dados à medida que os grupos de linhas e de colunas do Tablix são processados. Nesse sentido, um grupo é contido por uma região de dados. Um grupo filho e seus irmãos são contidos pelo grupo pai. Por exemplo, um item de alternância para um grupo deve ser uma caixa de texto no mesmo escopo do grupo ou em qualquer escopo do grupo contentor. Para obter mais informações, consulte Entendendo escopos contentores posteriormente neste tópico.

  • Escopo para funções de agregação. O processador do relatório avalia cada expressão de agregação em um escopo nomeado ou escopo padrão, conforme descrito na lista a seguir.

    • O escopo nomeado pode ser o nome de um conjunto de dados, uma região de dados ou um grupo.

    • O escopo padrão depende da propriedade do item do relatório que o processador de relatório está avaliando. Por exemplo, o escopo padrão de uma tabela do Tablix em uma região de dados com grupos de linhas e colunas é o grupo de linhas e colunas mais interno ao qual a célula pertence. O escopo padrão de uma célula em uma tabela sem nenhum grupo é o grupo de detalhes. Na superfície de design, uma região de dados do Tablix fornece elementos visuais que podem ajudar a determinar os escopos disponíveis de uma célula. Barras de grupos são exibidas acima e ao lado da região de dados do Tablix para mostrar quais células ou colunas pertencem a um grupo. Quando uma célula é selecionada, os indicadores de grupo mostram os grupos ativos mais internos aos quais a célula pertence. Para obter mais informações, consulte Trabalhando com regiões de dados Tablix.

      Para uma caixa de texto na superfície de design, não há um escopo padrão. Você deve especificar o nome do conjunto de dados a ser usado, por exemplo, =First(Fields!Sales.Value,"Dataset1").

      Ao chamar uma função interna e especificar um escopo nomeado, verifique a referência à função para determinar quais escopos são válidos. Por exemplo, para Sum, é possível especificar o escopo padrão ou um escopo contentor.

Compreendendo escopos contentores

Os escopos a seguir listam a ordem de contenção da mais externa (superior) para a mais interna (inferior) e descrevem os dados que eles representam:

  • Conjunto de dados de relatório   Especifica o conjunto de dados do relatório vinculado à região de dados ou a um item de relatório no corpo do relatório. Os dados usados para agregação são do conjunto de dados do relatório após as expressões de filtro de conjunto de dados serem aplicadas.

  • Região de dados   Especifica os dados da região de dados após as expressões de filtro e classificação serem aplicadas. Filtros de grupo não são usados ao calcular agregações para regiões de dados.

  • Grupos de linhas e colunas   Especifica os dados após as expressões e filtros de grupo serem aplicadas para o grupo pai e os grupos filho. Para fins de identificação de confinamento do escopo, cada grupo pai contém seus grupos filho.

  • Regiões de dados aninhadas   Especifica os dados da região de dados aninhada no contexto da célula para a qual eles foram adicionados e após as expressões de filtro e de classificação de região de dados aninhados tiverem sido aplicadas.

  • Grupos de linhas e colunas para as regiões de dados aninhadas   Especifica os dados após as expressões e filtros de grupo de regiões de dados aninhadas terem sido aplicadas.

Quando uma função interna indica que você deve especificar o escopo atual ou o escopo de contenção, não é possível especificar um escopo que seja inferior ou do mesmo nível na ordem de confinamento além do escopo atual. Por exemplo, de uma linha em um grupo de linhas que tem um grupo filho, não é possível especificar o nome do grupo filho como um escopo nem especificar um grupo de linhas irmãs. Você deve usar o escopo padrão ou especificar um escopo mais alto na ordem de confinamento.

ObservaçãoObservação

Não é possível agregar valores entre um grupo de linhas e entre um grupo de colunas em uma única expressão. Não há suporte para a escrita de uma expressão que inclua uma agregação com um escopo de grupo de linhas e outra agregação com um escopo de grupo de colunas.

Expressões de filtro

Expressões de filtro de conjunto de dados e de região de dados não podem conter funções de agregação. Filtros de grupo são ignorados ao calcular agregações para regiões de dados.

Calculando agregações

As seguintes funções internas calculam valores resumidos para um conjunto de dados numéricos não nulos no escopo padrão ou no escopo nomeado. Todos os dados usados para um cálculo de agregação devem ser do mesmo tipo de dados. Para converter dados que têm vários tipos de dados numéricos no mesmo tipo de dados, use funções de conversão, como CInt, CDbl ou CDec. Para obter mais informações, consulte Funções de conversão de tipo.

Para usar essas funções para calcular resumos de um grupo de hierarquia recursiva, você deve especificar o parâmetro Recursive.

Função

Descrição

Avg

Retorna a média de todos os valores numéricos não nulos especificados pela expressão, avaliados no escopo fornecido.

Count

Retorna uma contagem de valores não nulos especificados pela expressão, avaliados no contexto do escopo fornecido.

CountDistinct

Retorna uma contagem de todos os valores não nulos distintos especificados pela expressão, avaliados no contexto do escopo fornecido.

Max

Retorna o valor máximo de todos os valores numéricos não nulos especificados pela expressão, no contexto do escopo fornecido. É possível usar essa função para especificar o valor máximo de um eixo do gráfico para controlar a escala.

Min

Retorna o valor mínimo de todos os valores numéricos não nulos especificados pela expressão, no contexto do escopo fornecido. É possível usar essa função para especificar o valor mínimo de um eixo do gráfico para controlar a escala.

StDev

Retorna o desvio padrão de todos os valores numéricos não nulos especificados pela expressão, avaliados no escopo fornecido.

StDevP

Retorna o desvio padrão da população de todos os valores numéricos não nulos especificados pela expressão, avaliados no contexto do escopo fornecido.

Sum

Retorna a soma de todos os valores numéricos não nulos especificados pela expressão, avaliados no escopo fornecido.

Var

Retorna a variação de todos os valores numéricos não nulos especificados pela expressão, avaliados no escopo fornecido.

VarP

Retorna a variação da população de todos os valores não nulos especificados pela expressão, avaliados no contexto do escopo fornecido.

Calculando valores de execução

As seguintes funções internas calculam valores em uso para um conjunto de dados. RowNumber é semelhante a RunningValue pelo fato de que ela retorna o valor em uso de uma contagem que é incrementada para cada linha dentro do escopo de contenção. O parâmetro do escopo dessas funções deve especificar um escopo de contenção que controle quando a contagem é reiniciada.

Função

Descrição

RowNumber

Retorna uma contagem contínua do número de linhas para o escopo especificado. A função RowNumber reinicia a contagem em 1, não em 0.

RunningValue

Retorna uma agregação contínua de todos os valores numéricos não nulos especificados pela expressão, avaliados para o escopo fornecido.

Recuperando contagens de linhas

A seguinte função interna calcula o número de linhas no escopo fornecido. Use esta função para contar todas as linhas, inclusive as linhas com valores nulos.

Função

Descrição

CountRows

Retorna o número de linhas no escopo especificado, incluindo linhas com valores nulos.

Recuperando valores dependentes de classificação

As seguintes funções internas retornam o primeiro, o último e o valor anterior dentro de um escopo fornecido. Estas funções dependem da ordem de classificação dos valores dos dados. Use estas funções, por exemplo, para localizar o primeiro e o último valor em uma página para criar um cabeçalho de página em estilo de dicionário. Use Previous para comparar um valor em uma linha com o valor da linha anterior dentro de um escopo específico, por exemplo, para localizar valores de porcentagem ano a ano em uma tabela.

Função

Descrição

First

Retorna o primeiro valor no escopo fornecido da expressão especificada.

Last

Retorna o último valor no escopo fornecido da expressão especificada.

Previous

Retorna o valor ou o valor agregado especificado para a instância anterior de um item dentro do escopo especificado.

Recuperando agregações do servidor

A seguinte função interna recupera agregações personalizadas do provedor de dados. Por exemplo, usando um tipo de dados do Analysis Services, é possível recuperar agregações calculadas no servidor de fonte de dados para uso em um cabeçalho de grupo.

Função

Descrição

Aggregate

Retorna uma agregação personalizada da expressão especificada, conforme definido pelo provedor de dados.

Testando para escopo

A seguinte função interna testa o contexto atual de um item de relatório para verificar se ele é um membro de um escopo específico.

Função

Descrição

InScope

Indica se a instância atual de um item está dentro do escopo especificado.

Recuperando nível recursivo

A seguinte função interna recupera o nível atual quando uma hierarquia recursiva é processada. Use o resultado dessa função com a propriedade Padding em uma caixa de texto para controlar o nível de recuo de uma hierarquia visual para um grupo recursivo. Para obter mais informações, consulte Criando grupos de hierarquias recursivas (Reporting Services).

Função

Descrição

Nível

Retorna o nível atual de profundidade em uma hierarquia recursiva.