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 金额大于其他州,并附有示例?为此,我们将使用下面显示的数据。

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 条记录,而忽略它们的度量值。
没有人会接受上述结果,因为它们是世界上表现最好的 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 函数将使用以下语句从源数据中选择前 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]

首先,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 函数中使用适当的度量值作为第二个参数。否则,您将得到错误的结果。

