MDX BottomPercent 函数将给定数据按升序排序。然后 BottomPercent 从排序后的数据中选择所需数量的记录,使其总和大于或等于指定的百分比。
MDX BottomPercent 函数语法
MDX BottomPercent 在多维表达式中的基本语法如下所示:
BOTTOMPERCENT (Set_Expression, Percentage, Numeric_Expression)
- Set_Expression:您想检查的任何 Multidimensional Expression 或属性。
- Percentage:请输入您想要检索的百分比。
- Numeric_Expression:任何多维表达式或度量。BottomPercent 函数将使用此 Numeric_Expression 按升序对数据进行排序,然后选择满足百分比所需的记录数。
如何编写 MDX BottomPercent 函数以从(Adventure Works Cube 中存在的)Geography Dimension 中提取所有在其零售商销售额(Reseller Sales amount)中处于底部 1% 的州?为此,我们将使用下面显示的数据。

MDX BottomPercent 函数示例
以下查询返回 Geography Dimension 中所有在零售商销售总额中贡献了底部 1% 的州。
提示:请使用 MDX TopPercent 函数来查找顶部百分比。
SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
BOTTOMPERCENT (
[Geography].[Geography].[State-Province], 1
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]
在上面的 MDX 查询中,我们在列上选择了 [Reseller Sales Amount] 度量,在行上选择了 Geography Dimension 中存在的 [State Province] 列。接下来,BottomPercent 函数将使用 Measures.[Reseller Sales Amount] 按升序对数据进行排序。然后,它找到占总销售额的百分比。

如果您观察上面的 BottomPercent 屏幕截图,它们并不是总记录的底部 1% 的行。如果您将上面屏幕截图中存在的零售商销售额总和相加,它将大于或等于总零售商销售额的 1%。简而言之,上述州是贡献了总销售额底部 1% 的底部州。
MDX BottomPercent 函数示例 2
在此示例中,我们将使用两个度量 ([Measures].[Reseller Sales Amount] [Measures].[Reseller Gross Profit])。
SELECT {[Measures].[Reseller Sales Amount],
[Measures].[Reseller Gross Profit]} ON COLUMNS,
BOTTOMPERCENT (
[Geography].[Geography].[State-Province], 1
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]

如果您观察上面的屏幕截图,我们发现 [Reseller Gross Profit] 的结果不一致。这是因为数据是根据 [Reseller Sales Amount] 排序的。
注意:请在 BOTTOMPERCENT 函数中使用适当的度量作为第三个参数。否则,您将得出错误的结果。
NON EMPTY 与 MDX BottomPercent 函数结合使用
在此示例中,我们将使用 Non Empty 关键字来删除 BottomPercent 函数返回的 NULL 值。
SELECT {[Measures].[Reseller Sales Amount] } ON COLUMNS,
NON EMPTY
BOTTOMPERCENT (
[Geography].[Geography].[State-Province], 1
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]

尽管我们要求的是底部 1% 的记录,但上面的查询显示了少量记录,因为其余记录为 NULL。我们在上述查询中使用的 MDX Non Empty 关键字删除了这些 NULL 记录。