MDX BottomCount 函数将按升序对给定数据进行排序,然后从排序后的数据中选择所需的记录数。例如,如果您想找出表现最差的 10 种产品,或者想找出销量最低的 10 个地区,或者计算最低工资。我们可以将此 BottomCount 函数与度量值一起使用。
MDX BottomCount 函数语法
多维表达式中 BottomCount 的基本语法如下所示
BOTTOMCOUNT (Set_Expression, Count, Numeric_Expression)
- Set_Expression:要检查的任何多维表达式或属性。
- Count:您要检索多少条记录?
- Numeric_Expression:任何多维表达式或度量值。这是一个可选参数。如果使用此参数,MDX BOTTOMCOUNT 将使用此 Numeric_Expression 按升序对数据进行排序。然后,它会选择您要求的记录数;否则,BOTTOMCOUNT 将在不排序的情况下选择所需的记录数。
如何编写 MDX BottomCount 函数以从地理维度(存在于 Adventure Works Cube 中)中提取销量低于其他地区的 10 个州,并附带示例?为此,我们将使用以下显示的数据。

MDX BottomCount 带有两个参数
在此示例中,我们将向您展示,当我们在 MDX BottomCount 函数中省略第三个参数时会发生什么。以下查询将按上述源中出现的顺序返回最后 10 条记录。
提示:请使用 MDX TOPCOUNT 函数来获取表现最好的 10 个州。
SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
BOTTOMCOUNT (
[Geography].[Geography].[State-Province]
,10
) ON ROWS
FROM [Adventure Works]
在上面的 MDX 查询中,我们在列上选择了 [Reseller Sales Amount] 度量值,在行上选择了地理维度中存在的 [State Province] 属性。接下来,BottomCount 函数将选择 Bottom 10 记录,而忽略其度量值。
从上图可以看出,它们并不是销量低于其他州的 10 个州的销量。这里的 BottomCount 函数只是按插入顺序选择了底部的 10 条记录。
MDX BottomCount 函数示例
当我们在 BottomCount 函数中添加第三个参数时会发生什么?以下查询将使用 [Measures].[Reseller Sales Amount] 按升序对记录进行排序,然后返回排序后的数据中的前十条记录。简而言之,我们将获得全球表现最差的 10 个州。
SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
BOTTOMCOUNT (
[Geography].[Geography].[State-Province]
,10
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]

NON EMPTY 与 MDX BottomCount 函数结合使用
在此示例中,我们将使用 Non Empty 关键字来删除 BottomCount 函数返回的 NULL 值。
SELECT {[Measures].[Reseller Sales Amount] } ON COLUMNS,
NON EMPTY
BOTTOMCOUNT (
[Geography].[Geography].[State-Province], 10
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]

尽管我们要求的是底部的 10 条记录,但上面的查询显示了 3 条记录,因为其余 7 条记录是 NULL。我们在上述查询中使用的 MDX Non Empty 关键字移除了这 7 条记录。
注意:请将适当的度量值作为第三个参数传递给 BOTTOMCOUNT 函数。否则,您将得到错误的结果。
