MDX TopPercent 函数将对给定数据按降序排序。然后从排序后的数据中选择总和大于或等于指定百分比的记录数。
MDX TopPercent 在多维表达式中的基本语法如下所示
TOPPERCENT (Set_Expression, Percentage, Numeric_Expression)
- Set_Expression:您想检查的任何 Multidimensional Expression 或属性。
- Percentage:请提供您想检索的百分比。
- Numeric_Expression:任何多维表达式或度量。TopPercent 函数将使用此 Numeric_Expression 按降序对数据进行排序。然后,选择匹配百分比所需的记录数。
让我们看看如何编写 MDX TopPercent 函数以从地理维度(存在于 Adventure Works Cube 中)中提取为 Reseller Sales amount 贡献了 60% 总销售额的州。为此,我们将使用如下所示的数据。

MDX TopPercent 函数示例
以下 toppercent 查询将返回地理维度中所有为总经销商销售额贡献了 60% 的州。
SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
TOPPERCENT (
[Geography].[Geography].[State-Province], 60
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]
在上面的 MDX 查询中,我们在列上选择了 [Reseller Sales Amount] 度量,在行上选择了地理维度中的 [State Province] 列。接下来,TopPercent 函数将使用 Measures.[Reseller Sales Amount] 按降序对数据进行排序,然后计算从总销售额中获得的销售额百分比。
如果您观察上面的 Toppercent 截图,它们并不是总记录的 60%。如果您对上面截图中的 Reseller Sales Amounts 求和,它将大于或等于总 Reseller Sales Amount 的 60%。简而言之,上面提到的州贡献了总销售额的 60%。
MDX Toppercent 函数示例 2
在此示例中,我们将使用两个度量 ([Measures].[Reseller Sales Amount] [Measures].[Reseller Gross Profit])。
SELECT {[Measures].[Reseller Sales Amount],
[Measures].[Reseller Gross Profit]} ON COLUMNS,
TOPPERCENT (
[Geography].[Geography].[State-Province], 60
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]
如果您观察上面的截图,我们会得到 [Reseller Gross Profit] 的不均匀结果。这是因为数据是根据 [Reseller Sales Amount] 排序的
注意:请在 TOPPERCENT 函数中使用适当的度量作为第三个参数。否则,您将得到错误的结果。

