TopPercent% (MDX)

Ordena um conjunto em ordem decrescente e retorna um conjunto de tuplas com os maiores valores cujo total acumulado é igual ou maior que uma porcentagem especificada.

Sintaxe

  
TopPercent(Set_Expression, Percentage, Numeric_Expression)   

Argumentos

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

Percentual
Uma expressão numérica válida que especifica a porcentagem de tuplas a serem retornadas.

Importante

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

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

Remarks

A função TopPercent calcula a soma da expressão numérica especificada avaliada sobre o conjunto especificado, ordenando o conjunto em ordem decrescente. A função então retorna os elementos com os maiores valores cuja porcentagem cumulativa do valor total somado é pelo menos a porcentagem especificada. Essa função retorna o menor subconjunto de um conjunto cujo total cumulativo é pelo menos a porcentagem especificada. Os elementos retornados são ordenados do maior ao menor.

Warning

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

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

Importante

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

Exemplos

A. Retorno TopPercentual

O exemplo a seguir retorna as melhores cidades que ajudam a entrar no top 10% de vendas dos revendedores, na categoria Bike. O resultado é ordenado em 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 de 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. Entenda o efeito dos valores negativos

A próxima revisão ajudará a entender o efeito dos valores negativos no Numeric_Expression. Primeiro, vamos construir um contexto onde possamos apresentar o comportamento.

A consulta a seguir retorna uma tabela com os Revendedores 'Valor de Venda', 'Custo Total do Produto' e 'Lucro Bruto', ordenados em ordem decrescente de lucro. Por favor, note que há apenas valores negativos para o lucro; Portanto, 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 retorna os seguintes resultados; as linhas da seção do meio foram removidas para maior legibilidade.

Bicicletas de passeio Valor de vendas do revendedor Revendedor Custo Total do Produto Lucro Bruto do Revendedor
Turnê - 2000 Blue, 50 $157.444,56 $163.112,57 ($5.668,01)
Turnê - 2000 Blue, 46 $321.027,03 $333.021,50 ($11.994,47)
Touring-3000 Blue, 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 você fosse convidado a apresentar as 100 melhores motos% por lucro, escreveria uma consulta 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 há valores negativos no Numeric_Expression , apenas uma linha é retornada.

Bicicletas de passeio Valor de vendas do revendedor Revendedor Custo Total do Produto Lucro Bruto do Revendedor
Turnê - 2000 Blue, 50 $157.444,56 $163.112,57 ($5.668,01)