Compartilhar via


TopPercent (MDX)

Classifica um conjunto em ordem decrescente e retorna um conjunto de tuplas com os valores mais altos, cujo total cumulativo é igual ou maior do que um percentual especificado.

Sintaxe

  
TopPercent(Set_Expression, Percentage, Numeric_Expression)   

Argumentos

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

Percentual
Uma expressão numérica válida que especifica o percentual de tuplas a ser retornado.

Importante

O percentual precisa ser um valor positivo; os valores negativos geram um erro.

Numeric_expression
Uma expressão numérica válida, geralmente uma linguagem MDX de coordenadas de célula, que retorna um número.

Comentários

A função TopPercent calcula a soma da expressão numérica especificada avaliada sobre o conjunto especificado, classificando o conjunto em ordem decrescente. A função retorna os elementos com os valores mais altos, cujo percentual cumulativo do valor total somado seja pelo menos o percentual especificado. Essa função retorna o subconjunto menor de um conjunto cujo total cumulativo é pelo menos o percentual especificado. Os elementos retornados são classificados do maior para menor.

Aviso

Se Numeric_Expression retornar qualquer valor negativo, o TopPercent retornará apenas uma (1) linha.

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

Importante

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

Exemplos

a. Retornar TopPercent

O exemplo a seguir retorna as melhores cidades que ajudam a fazer os 10% principais das vendas do revendedor para a categoria Bike. O resultado é classificado em ordem decrescente, começando com a cidade que tem o valor mais alto 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 Reseller Sales Amount
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 consulta seguinte 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. Entender o efeito dos valores negativos

O passo a passo a seguir ajudará a entender o efeito dos valores negativos no Numeric_Expression. Primeiro, vamos criar algum contexto onde podemos apresentar o comportamento.

A consulta a seguir retorna uma tabela de Resellers 'Sales Amount', 'Total Product Cost' e 'Gross Profit', em ordem decrescente de lucro. Observe que somente há valores negativos para lucro; portanto, a menor perda aparecerá no início.

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 resultados a seguir; as linhas da seção intermediária foram removidas para proporcionar legibilidade.

Bicicletas de passeio Reseller Sales Amount Custo do produto total do revendedor Lucro bruto do revendedor
Touring-2000 Blue, 50 $157.444,56 $163.112.57 (US$ 5.668,01)
Touring-2000 Blue, 46 $321.027,03 $333.021,50 (US$ 11.994,47)
Touring-3000 Blue, 62 US$ 87.773,61 $100.133.52 (US$ 12.359,91)
... ... ... ...
Touring-1000 Amarelo, 46 $1.016.312,83 $1.234.454,27 (US$ 218.141,44)
Touring-1000 Yellow, 60 $1.184.363,30 $1.443.407,51 (US$ 259.044,21)

Agora, se pedissem a você para apresentar as principais bicicletas 100% por lucro, seria necessário escrever 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]  
  

Observe que a consulta solicita um percentual de 100%; o que significa que todas as linhas devem ser retornadas. No entanto, como há valores negativos no Numeric_Expression , apenas uma linha é retornada.

Bicicletas de passeio Reseller Sales Amount Custo do produto total do revendedor Lucro bruto do revendedor
Touring-2000 Blue, 50 $157.444,56 $163.112.57 (US$ 5.668,01)

Consulte Também

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