Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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) |