MDX BottomSum 函数将按升序对给定数据进行排序。然后,bottomsum 从排序数据中选择记录数,使其总和至少等于指定值。
MDX BottomSum 函数语法
多维表达式中 BottomSum 的基本语法是:
BOTTOMSUM (Set_Expression, Value, Numeric_Expression)
- Set_Expression:您想检查的任何 Multidimensional Expression 或属性。
- Value:请提供 Value。MDX BOTTOMSUM 函数将检索总和至少为此 Value 的记录。
- Numeric_Expression:任何多维表达式或度量。BottomSum 函数将使用此 Numeric_Expression 按升序对数据进行排序。接下来,它会选取匹配 Value 所需的记录数。
如何编写 MDX BottomSum 函数以从 Adventure Works Cube 的 Geography Dimension 中提取底部 State,使其总和至少等于用户给定的值?为此,我们将使用下面显示的数据。

MDX BottomSum 函数示例
下面的 bottomsum 查询将返回 Geography Dimension 中的底部 State,它们合计的 Reseller Sales Amount 总额为 100000。
提示:请使用 TOPSUM 函数 计算前 N 条记录的总和
SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
BOTTOMSUM (
[Geography].[Geography].[State-Province]
,100000
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]
在上面的 MDX 查询中,我们在列上选择了 [Reseller Sales Amount] 度量,在行上选择了 geography Dimension 中存在的 [State Province] 列。接下来,BottomSum 函数将使用 Measures.[Reseller Sales Amount] 按升序对数据进行排序。然后,累加每个 State 的销售额,直到达到 100000。
如果您观察上面的屏幕截图,如果您对上面显示的 State 的销售额进行总计,它们大约等于 104214.78。这意味着它大于我们所需的值。
在 MDX BottomSum 中使用 NON EMPTY
在此示例中,我们将使用 Non Empty 关键字来删除 BottomSum 函数返回的 NULL 值。
SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
NON EMPTY
BOTTOMSUM (
[Geography].[Geography].[State-Province]
,100000
,[Measures].[Reseller Sales Amount]
) ON ROWS
FROM [Adventure Works]
如果您观察上面的屏幕截图,我们在上面查询中使用的 MDX Non Empty 关键字删除了这些 Null 记录。现在,它看起来很漂亮且简单 :)
注意:请在 BOTTOMSUM 函数中使用适当的 Measure 作为第三个参数。否则,您将得出错误的结果。

