MDX Head 函数

MDX Head 函数用于从源数据中选择所需数量的记录。例如,如果您想查找表现最好的 10 种产品。或者您想找到销售额最高的 10 个地区,或者计算最高工资。我们可以将此 Head 函数与 Order 函数一起使用。

MDX HEAD 与 SQL TOP 子句之间的相似之处

HEAD 函数类似于 SQL TOP 子句。

  • TOP 子句一样,Head 函数按记录最初存储的顺序提取所需的记录数。
  • 要提取表现最好的 10 条记录,我们必须在 SQL 中使用 Order By 子句
  • 要提取表现最好的 10 条记录,我们必须使用 MDX Order 函数以及适当的度量值或数值。

MDX Head 函数语法

Head 函数只允许两个参数。Multidimensional Expression 中 HEAD 函数的基本语法如下所示

HEAD (Set_Expression, Count)
  • Set_Expression:您想检查的任何 Multidimensional Expression 或属性。
  • Count:您想检索的记录数。

如何编写 MDX HEAD 函数以从 Geography 维度(存在于 Adventure Works Cube 中)中提取 Top 7 的州,这些州的 Reseller Sales 金额大于其他州,并附有示例?为此,我们将使用下面显示的数据。

Source Table

MDX Head 函数示例

在此示例中,我们将向您展示如何编写 Head 函数。以下查询将按照它们在上面出现的顺序返回源中的前七条记录。

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

在上面的 MDX 查询中,我们在列中选择了 [Reseller Sales Amount] 度量值,在行中选择了 geography 维度中存在的 [State Province] 属性。接下来,Head 函数将选择前 7 条记录,而忽略它们的度量值。

MDX HEAD FUNCTION 1

没有人会接受上述结果,因为它们是世界上表现最好的 7 个州。它们只是前七条记录。

将 Order 函数与 MDX Head 函数一起使用

在此示例中,我们将向您展示当添加 MDX Order 函数时会发生什么。

SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
 ORDER (
    HEAD ([Geography].[Geography].[State-Province], 7)--Already Picked Data 
   ,[Measures].[Reseller Sales Amount], DESC
       ) ON ROWS
FROM [Adventure Works]

HEAD 2

首先,Head 函数将使用以下语句从源数据中选择前 7 条记录。

 HEAD ([Geography].[Geography].[State-Province], 7)

接下来,MDX Head 函数外部的 Order 函数将使用它们的 Reseller Sales Amount 按降序对已选定的数据进行排序。

 ORDER (
    HEAD ([Geography].[Geography].[State-Province], 7) 
   ,[Measures].[Reseller Sales Amount], DESC
       ) ON ROWS

这意味着我们得到的是源数据的前 7 条记录,按降序排列。

让我们更改上面的代码

SELECT {[Measures].[Reseller Sales Amount]} ON COLUMNS,
  HEAD (
    ORDER (
          [Geography].[Geography].[State-Province]
         ,[Measures].[Reseller Sales Amount]
         ,BDESC
           )
     ,7 
      ) ON ROWS
FROM [Adventure Works]
MDX HEAD FUNCTION 3

首先,Order 函数将使用其 Reseller Sales Amount 按降序对 State Province 数据进行排序。我们使用 BDESC 来打破层次结构,同时对数据进行排序。

ORDER (
        [Geography].[Geography].[State-Province]
       ,[Measures].[Reseller Sales Amount]
       ,BDESC
      )

接下来,Head 函数将从已排序的数据中选取前 7 条记录。

HEAD (
    ORDER (
          [Geography].[Geography].[State-Province]
         ,[Measures].[Reseller Sales Amount]
         ,BDESC
           )
     ,7 
      ) ON ROWS

现在,我们得到了表现最好的 7 个州。

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