TopPercent (MDX)

按降序对集进行排序,并返回一个最大值元组集,该元组集的累积合计等于或大于指定的百分比。

语法

  
TopPercent(Set_Expression, Percentage, Numeric_Expression)   

参数

Set_Expression
返回集的有效多维表达式 (MDX)。

百分比
一个有效的数值表达式,指定要返回的元组的百分比。

重要

百分比 需要为正值;负值生成错误。

Numeric_Expression
返回数字的有效数值表达式,通常为单元坐标的多维表达式 (MDX)。

备注

TopPercent 函数计算对指定集计算的指定数值表达式的总和,并按降序对集进行排序。 然后,该函数返回具有最高值的元素,其总合计值的累积百分比至少是指定的百分比。 该函数返回累积合计至少达到指定百分比的最小子集。 返回的元素按从大到小的顺序排序。

警告

如果 Numeric_Expression 返回任何负值,则 TopPercent 仅返回一 (1) 行。

请参阅针对此行为的详细演示的第二个示例。

重要

BottomPercent 函数一样, TopPercent 函数始终会打破层次结构。

示例

A. 返回 TopPercent

下面的示例返回对于“自行车”类别,帮助实现前 10% 的分销商销售额的最佳城市。 结果将按降序排序,并且从具有最高销售额的城市开始。

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

上面的表达式生成以下结果:

城市 Reseller Sales Amount
Toronto $3,508,904.84
London $1,521,530.09
Seattle $1,209,418.16
Paris $1,170,425.18

使用下面的查询可以获取原始数据集,并返回 588 行:

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. 了解负值的影响

以下演练将有助于了解负值在 Numeric_Expression的影响。 首先,将生成一些可展示该行为的上下文。

下面的查询将返回一个表,由分销商的“Sales Amount”、“Total Product Cost”和“Gross Profit”构成,并且按利润的降序排序。 请注意,对于利润仅存在负值;因此,最小的利润损失将出现在最顶部。

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]  
  

上述查询会返回以下结果;为便于阅读,中间部分的行已删除。

观光自行车 Reseller Sales Amount Reseller Total Product Cost Reseller Gross Profit
Touring-2000 Blue, 50 $157,444.56 $163,112.57 ($5,668.01)
Touring-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 黄色, 46 $1,016,312.83 $1,234,454.27 ($218,141.44)
Touring-1000 Yellow, 60 $1,184,363.30 $1,443,407.51 ($259,044.21)

现在,如果要求您按利润展示前 100% 的自行车,则编写如下查询:

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]  
  

请注意,查询要求百分之百 (100%);这意味着应返回所有行。 但是,由于 Numeric_Expression 中存在负值,因此仅返回一行。

观光自行车 Reseller Sales Amount Reseller Total Product Cost Reseller Gross Profit
Touring-2000 Blue, 50 $157,444.56 $163,112.57 ($5,668.01)

另请参阅

MDX 函数参考 (MDX)