MDX TopPercent 函数

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] 按降序对数据进行排序,然后计算从总销售额中获得的销售额百分比。

MDX TOPPERCENT FUNCTION 1

如果您观察上面的 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]

MDX TOPPERCENT FUNCTION 2

如果您观察上面的截图,我们会得到 [Reseller Gross Profit] 的不均匀结果。这是因为数据是根据 [Reseller Sales Amount] 排序的

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