Compartilhar via


Usar funções de agregação

Quando uma dimensão for usada para dividir uma medida, a medida é resumida juntamente com as hierarquias contidas nessa dimensão. O comportamento da soma depende da função de agregação especificada para a medida. Para a maioria das medidas que contém dados numéricos, a função de agregação é Sum. O valor da medida totalizará valores diferentes, dependendo do nível da hierarquia que está ativo.

No Analysis Services, cada medida que você cria é apoiada por uma função de agregação que determina a operação da medida. Tipos de agregação predefinidos incluem Soma, Mín, Máx, Contagem, Contagem Distinta e várias outras funções mais especializadas. Como alternativa, se você precisar de agregações com base em fórmulas complexas ou personalizadas, poderá criar um cálculo de MDX no lugar de uma função de agregação predefinida. Por exemplo, se você quiser definir uma medida para um valor percentual, faria isso na linguagem MDX, usando uma medida calculada. Consulte Instrução CREATE MEMBER (MDX).

As medidas criadas por meio do Assistente de Cubo são atribuídas a um tipo de agregação como parte da definição da medida. O tipo de agregação é sempre Sum, supondo que a coluna de origem contém dados numéricos. Sum é atribuído independentemente do tipo de dados da coluna de origem. Por exemplo, se você usou o Assistente de Cubo para criar medidas e recebeu todas as colunas de uma tabela de fatos, irá notar que todas as medidas resultantes têm uma agregação de Sum, mesmo que a origem seja uma coluna de data e hora. Sempre examine os métodos de agregação pré-atribuídos para medidas criadas por meio do assistente para se certificar de que a função de agregação seja adequada.

Você pode atribuir ou alterar o método de agregação em qualquer definição de cubo, por meio de SQL Server Data Tools - Business Intelligence ou por meio de linguagem MDX. Consulte Criar Medidas e Grupos de Medidas ou Função Aggregate (MDX) para obter mais instruções.

Funções de agregação

O MicrosoftSQL ServerAnalysis Services fornece funções para agregar medidas às dimensões contidas em grupos de medidas. A capacidade aditiva de uma função de agregação determina como a medida é agregada entre todas as dimensões no cubo. As funções de agregação enquadram-se em três níveis de capacidade aditiva:

  • Aditiva
    Uma medida aditiva, também chamada de medida totalmente aditiva, pode ser agregada a todas as dimensões incluídas no grupo de medidas que contém a medida, sem restrição.

  • Semiaditiva
    Uma medida semiaditiva pode ser agregada a algumas das dimensões, mas não a todas, incluídas no grupo de medidas que contém a medida. Por exemplo, uma medida que representa a quantidade disponível em estoque pode ser agregada à dimensão geográfica para produzir a quantidade total disponível para todos os armazéns, mas a medida não pode ser agregada a uma dimensão de tempo porque ela representa um instantâneo periódico de quantidades disponíveis. Agregar essa medida a uma dimensão de tempo produziria resultados incorretos. Para obter detalhes, consulte Definir um comportamento semiaditivo.

  • Não aditiva
    Uma medida não aditiva não pode ser agregada a nenhuma das dimensões incluídas no grupo de medidas que contém a medida. Em vez disso, ela deve ser calculada individualmente para cada célula do cubo que representa a medida. Por exemplo, uma medida calculada que retorna uma porcentagem, como margem de lucro, não pode ser agregada a partir dos valores de porcentagem de membros filho de qualquer dimensão.

A tabela a seguir lista as funções de agregação do Analysis Services e descreve a capacidade aditiva e a saída prevista da função.

Função de agregação

Capacidade aditiva

Valor retornado

Sum

Aditiva

Calcula a soma de valores de todos os membros filho. Essa é a função de agregação padrão.

Count

Aditiva

Recupera a contagem de todos os membros filho.

Min

Semiaditiva

Recupera o valor mais baixo de todos os membros filho.

Max

Semiaditiva

Recupera o valor mais alto de todos os membros filho.

DistinctCount

Não aditiva

Recupera a contagem de todos os membros filho exclusivos. Para obter mais detalhes, consulte About Distinct Count Measures na próxima seção.

None

Não aditiva

Nenhuma agregação é executada e todos os valores de membros folha e não folha de uma dimensão são fornecidos diretamente da tabela de fatos para o grupo de medidas que contém a medida. Se não for possível ler um valor da tabela de fatos para um membro, o valor desse membro será definido como nulo.

ByAccount

Semiaditiva

Calcula a agregação de acordo com a função de agregação atribuída ao tipo de conta de um membro em uma dimensão de conta. Se não existir uma dimensão de tipo de conta no grupo de medidas, é tratada como a função de agregação None.

Para obter mais informações sobre dimensões de contas, consulte Criar uma Conta de Finanças de Dimensão de tipo pai-filho.

AverageOfChildren

Semiaditiva

Calcula a média de valores de todos os membros filho não vazios.

FirstChild

Semiaditiva

Recupera o valor do primeiro membro filho.

LastChild

Semiaditiva

Recupera o valor do último membro filho.

FirstNonEmpty

Semiaditiva

Recupera o valor do primeiro membro filho não vazio.

LastNonEmpty

Semiaditiva

Recupera o valor do último membro filho não vazio.

Sobre medidas de contagem distintas

Uma medida com o valor da propriedade Aggregate Function de Distinct Count é chamada de medida de contagem distinta. Uma medida de contagem distinta pode ser usada para contar ocorrências dos membros de nível mais baixo de uma dimensão da tabela de fatos. Como a contagem é distinta, se um membro ocorrer várias vezes, ele será contado apenas uma vez. Uma medida de contagem distinta é sempre colocada em um grupo de medidas dedicado. Colocar uma medida de contagem distinta em seu próprio grupo de medidas é uma prática recomendada que foi embutida no designer como uma técnica de otimização do desempenho.

Normalmente, as medidas de contagem distinta são usadas para determinar para cada membro de uma dimensão quantos membros de nível inferior e distintos de outra dimensão compartilham linhas da tabela de fatos. Por exemplo, em um cubo Vendas, para cada cliente e grupo de clientes, quantos produtos distintos foram comprados? (Quer dizer, para cada membro da dimensão Clientes, quantos membros distintos, em nível inferior da dimensão Produtos, compartilham linhas na tabela de fatos?) Por exemplo, em um cubo Visitas ao Site da Internet, para cada visitante de site e grupo de visitantes de site, quantas páginas distintas no site da Internet foram visitadas? (Quer dizer, para cada membro da dimensão Visitantes de Site, quantos membros distintos, em nível inferior da dimensão Páginas, compartilham linhas na tabela de fatos?) Em cada um desses exemplos, os membros em nível inferior da segunda dimensão são contados por uma medida de contagem distinta.

Esse tipo de análise não precisa ser limitada a duas dimensões. Na verdade, uma medida de contagem distinta pode ser separada e dividida em qualquer combinação de dimensões do cubo, incluindo dimensões que contêm membros contados.

Uma medida de contagem distinta que conta membros baseia-se m uma coluna de chave estrangeira da tabela de fatos. (Ou seja, a propriedade Source Column da medida identifica essa coluna.) Essa coluna une a coluna da tabela de dimensões que identifica os membros contados pela medida de contagem distinta.

Consulte também

Referência

Referência de função MDX (MDX)

Conceitos

Medidas e Grupos de Medidas

Definir um comportamento semiaditivo