MDX TopSum 函数

MDX TopSum 函数将按降序对给定数据进行排序。然后从排序后的数据中选择总计至少等于指定值的所需记录数。

MDX TopSum 函数语法

多维表达式中 TopSum 的基本语法如下所示

TOPSUM (Set_Expression, Value, Numeric_Expression)
  • Set_Expression:您想检查的任何 Multidimensional Expression 或属性。
  • Value:请提供 Value。MDX TOPSUM 函数将检索总计至少为该 Value 的记录。
  • Numeric_Expression:任何多维表达式或度量。TopSum 函数将使用此 Numeric_Expression 按降序对数据进行排序,然后选择匹配 Value 所需的记录数。

编写 MDX TopSum 函数以从 Adventure Works Cube 中的 Geography Dimension 提取州(State)。这些州的总计至少等于用户给定的 Value。为此,我们将使用下面的数据。

MDX TopSum 函数示例

以下 TOPSUM 查询返回 Geography Dimension 中的所有州,这些州对总 Reseller Sales Amount 贡献了 40000000 的销售额。

SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
 TOPSUM (
	 [Geography].[Geography].[State-Province], 40000000
	,[Measures].[Reseller Sales Amount]
	) ON ROWS
FROM [Adventure Works]

在上面的 MDX 查询中,我们在 Columns 中选择了 [Reseller Sales Amount] 度量,在 Rows 中选择了 Geography Dimension 中的 [State Province] 列。接下来,TopSum 函数将使用 Measures.[Reseller Sales Amount] 按降序对数据进行排序,然后累加每个州的销售额,直到达到 40000000。

MDX TOPSUM FUNCTION 1

如果您观察上面的屏幕截图,如果您将上面显示的州的销售额加起来,它们大约等于 40243296.5。这意味着大于我们要求的。

MDX TopSum 函数示例 2

在此示例中,我们将使用两个度量 ([Measures].[Reseller Sales Amount] [Measures].[Reseller Gross Profit])。

SELECT {[Measures].[Reseller Sales Amount], 
        [Measures].[Reseller Gross Profit]} ON COLUMNS,
 TOPSUM (
	 [Geography].[Geography].[State-Province], 500000
	,[Measures].[Reseller Gross Profit]
       ) ON ROWS
FROM [Adventure Works]

在上面的 MDX TOP SUM 查询中,我们在 Columns 中选择了两个度量 ([Reseller Sales Amount]、[Reseller Gross Profit]),在 Rows 中选择了 Geography Dimension 中的 [State Province] 属性。接下来,TopSum 函数将使用 Measures.[Reseller Gross Profit] 按降序对数据进行排序,然后累加每个州的销售额,直到达到 500000。

MDX TOPSUM FUNCTION 2

如果您观察上面的 TOPSUM 屏幕截图,我们会得到 [Reseller Gross Profit] 总计为 500000 的顶级州。

注意:请在 TOPSUM 函数中使用合适的度量作为第三个参数。否则,您将得到错误的结果。