MDX Tail 函数

MDX Tail 函数用于从源数据的底部选择所需数量的记录。例如,如果您想查找表现最差的 10 个产品。或者,查找销售额最低的 10 个区域,或计算最低工资,请将此 Tail 函数与 Order 函数一起使用。

MDX Tail 函数语法

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

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

如何编写 MDX TAIL 函数以从 Adventure Works Cube 的 Geography 维度中提取底部 7 个州,并且这些州的总销售额低于其他州?对于这个 TAIL 示例,我们将使用下面显示的数据。

MDX Tail 函数示例

在本例中,我们将展示如何编写 Tail 函数。以下查询将返回上述源数据中的最后七条记录,顺序与它们在源数据中的出现顺序相同。

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

在上面的 MDX 查询中,我们在列中选择了 [Reseller Sales Amount] 度量,在行中选择了 Geography 维度中存在的 [State Province] 属性。接下来,Tail 函数将选择底部 7 条记录,而不考虑它们的测量值。

MDX TAIL FUNCTION 1

没有人会接受以上结果,因为它们是全球表现最差的州。它们仅仅是底部 7 条记录。

在 MDX Tail 函数中使用 Order 函数

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

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

首先,MDX Tail 函数将使用以下语句选择源数据中的最后 7 条记录。

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

接下来,Tail 函数外部的 Order 函数将使用其 Reseller Sales Amount 按降序对已选择的数据进行排序。

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

这意味着我们正在按降序获取源数据中的最后七条记录。

让我们更改上面的 MDX 代码。

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

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

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

接下来,Tail 函数将从已排序的数据中选择最后 7 条记录。

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

现在,我们得到了表现最差的 7 个州,也就是表现最差的州。

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

在 MDX Tail 函数中使用 NON EMPTY

在本例中,我们将使用 Non Empty 关键字来删除 NULL 值。

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

MDX TAIL FUNCTION 4

如果您观察上面的屏幕截图,我们使用的 MDX Non Empty 关键字删除了那些 Null 记录。现在,它看起来不错且易于理解 :)

评论已关闭。