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) |