TopPercent (MDX)
按降序对集进行排序,并返回一个最大值元组集,该元组集的累积合计等于或大于指定的百分比。
语法
TopPercent(Set_Expression, Percentage, Numeric_Expression)
参数
Set_Expression
返回集的有效多维表达式 (MDX)。Percentage
指定要返回的元组数的有效数值表达式。重要提示 Percentage 需要是正数值;负值将生成错误。
Numeric_Expression
通常是单元坐标(返回数字)的多维表达式 (MDX) 的有效数值表达式。
注释
TopPercent 函数使用指定的集对指定的数值表达式求和,同时对该集按降序排序。 然后,该函数返回具有最高值的元素,其总合计值的累积百分比至少是指定的百分比。 该函数返回累积合计至少达到指定百分比的最小子集。 返回的元素从大到小排序。
备注
如果 Numeric_Expression 返回任何负值,则 TopPercent 将仅返回一 (1) 行。
请参阅针对此行为的详细演示的第二个示例。
重要提示 |
---|
与 BottomPercent 函数一样,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])
示例
下面的演练将帮助您理解 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 Yellow, 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) |