TopPercent (MDX)

Ordena um conjunto por ordem decrescente e devolve um conjunto de tuplas com os valores mais altos cujo total acumulado é igual ou superior a uma percentagem especificada.

Syntax

  
TopPercent(Set_Expression, Percentage, Numeric_Expression)   

Arguments

Set_Expression
Uma expressão válida de Expressões Multidimensionais (MDX) que devolve um conjunto.

Percentagem
Uma expressão numérica válida que especifica a percentagem de tuplas a devolver.

Importante

A percentagem precisa de ser um valor positivo; valores negativos geram um erro.

Numeric_Expression
Uma expressão numérica válida que é tipicamente uma expressão de Expressões Multidimensionais (MDX) de coordenadas de célula que retornam um número.

Observações

A função TopPercent calcula a soma da expressão numérica especificada avaliada sobre o conjunto especificado, ordenando o conjunto por ordem decrescente. A função devolve então os elementos com os valores mais altos cuja percentagem acumulada do valor total somado é pelo menos a percentagem especificada. Esta função devolve o menor subconjunto de um conjunto cujo total cumulativo é pelo menos a percentagem especificada. Os elementos devolvidos estão ordenados do maior para o menor.

Warning

Se Numeric_Expression devolver qualquer valor negativo, então o TopPercent devolve apenas uma (1) linha.

Veja o segundo exemplo para uma apresentação detalhada deste comportamento.

Importante

Tal como a função BottomPercent , a função TopPercentual quebra sempre a hierarquia.

Examples

A. Retorno TopPercentual

O exemplo seguinte devolve as melhores cidades que ajudam a figurar no top 10% de vendas dos revendedores, na categoria de Bicicletas. O resultado é ordenado por ordem decrescente, começando pela cidade que tem o maior valor de vendas.

SELECT [Measures].[Reseller Sales Amount] ON 0,  
TopPercent  
   ({[Geography].[Geography].[City].Members}  
   , 10  
   , [Measures].[Reseller Sales Amount]  
   ) ON 1  
FROM [Adventure Works]  
WHERE([Product].[Product Categories].[Bikes])  

A expressão acima produz os seguintes resultados:

City Valor das Vendas do Revendedor
Toronto $3.508.904,84
London $1.521.530,09
Seattle $1.209.418,16
Paris $1.170.425,18

O conjunto original de dados pode ser obtido com a seguinte consulta e retorna 588 linhas:

SELECT [Measures].[Reseller Sales Amount] ON 0,  
Order  
   ({[Geography].[Geography].[City].Members}  
   , [Measures].[Reseller Sales Amount]  
   , BDESC  
   ) ON 1  
FROM [Adventure Works]  
WHERE([Product].[Product Categories].[Bikes])  
  

B. Compreender o efeito dos valores negativos

A seguinte explicação ajudará a compreender o efeito dos valores negativos na Numeric_Expression. Primeiro, vamos construir algum contexto onde possamos apresentar o comportamento.

A consulta seguinte devolve uma tabela dos Revendedores com o 'Montante das Vendas', 'Custo Total do Produto' e 'Lucro Bruto', ordenados por ordem decrescente de lucro. Por favor, note que existem apenas valores negativos para o lucro; Assim, a menor perda aparece no topo.

SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns  
     ,  ORDER( [Product].[Product Categories].[Bikes].[Touring Bikes].children, [Measures].[Reseller Gross Profit], BDESC )   ON rows  
FROM [Adventure Works]  
  

A consulta acima devolve os seguintes resultados; as linhas da secção do meio foram removidas para maior legibilidade.

Bicicletas de Touring Valor das Vendas do Revendedor Revendedor Custo Total do Produto Lucro Bruto do Revendedor
Digressão-2000 Blue, 50 $157.444,56 $163.112,57 ($5.668,01)
Digressão-2000 Blue, 46 $321.027,03 $333.021,50 ($11.994,47)
Touring-3000 Azul, 62 $87.773,61 $100.133,52 ($12.359,91)
... ... ... ...
Touring-1000 Amarelo, 46 $1.016.312,83 $1.234.454,27 ($218.141,44)
Touring-1000 Amarelo, 60 $1.184.363,30 $1.443.407,51 ($259.044,21)

Agora, se lhe pedissem para apresentar as 100 melhores bicicletas% por lucro, escreveria uma proposta como:

SELECT { [Measures].[Reseller Sales Amount], [Measures].[Reseller Total Product Cost], [Measures].[Reseller Gross Profit] } ON columns  
     ,  TOPPERCENT( [Product].[Product Categories].[Bikes].[Touring Bikes].children, 100,[Measures].[Reseller Gross Profit] )   ON rows  
FROM [Adventure Works]  
  

Por favor, note que a consulta pede cem por cento (100%); Isso significa que todas as linhas devem ser devolvidas. No entanto, como existem valores negativos no Numeric_Expression , apenas uma linha é devolvida.

Bicicletas de Touring Valor das Vendas do Revendedor Revendedor Custo Total do Produto Lucro Bruto do Revendedor
Digressão-2000 Blue, 50 $157.444,56 $163.112,57 ($5.668,01)