MDX 堂兄弟函数

在 MDX 中,Cousin 函数会在第二个参数指定的祖先下写入相同级别的成员。例如,如果您知道 2014 年日历年的第一个季度的值,并想查找 2015 年日历年的最后一个季度销售额,则可以使用此 Cousin 函数。

MDX Cousin Function 语法

Cousin 的基本语法是

COUSIN( Member_Expression, Ancestor_Member_Expression )
  • Member_Expression:任何返回有效成员的多维表达式。它将查找成员的级别。例如,该成员是季度、半年还是年度的第一个月等。
  • Ancestor_Member_Expression:任何返回有效祖先成员的多维表达式。MDX Cousin 函数将在该 Ancestor_Member 中查找第一个参数的堂兄弟成员。

在本文中,我们将通过示例向您展示如何在查询中编写 Cousin 函数。为此,我们将使用以下展示数据

MDX COUSIN

MDX Cousin Function 示例

在此示例中,我们将使用 Cousin 函数查找 2013 年日历年 Q1 CY 2012 的堂兄弟成员。

SELECT 
 {
  [Date].[Calendar].[Calendar Quarter].[Q1 CY 2012],
  COUSIN (
      [Date].[Calendar].[Calendar Quarter].[Q1 CY 2012],
      [Date].[Calendar].[Calendar Year].[CY 2013]
	 )
  } ON COLUMNS,
[Measures].[Internet Sales Amount] ON ROWS
FROM [Adventure Works]
MDX COUSIN FUNCTION 1

在上面的 MDX 查询中,我们在 Rows 上使用了 [Internet Sales amount]。

[Measures].[Internet Sales Amount] ON ROWS

SELECT 之后的第一个代码行将检查 Q1 CY 2012 并写入 Q1 CY 2012 的 Internet sales amount。众所周知,Q1 CY 2012 是 Calendar year 2012 的第一个季度。

[Date].[Calendar].[Calendar Quarter].[Q1 CY 2012],

下面的 MDX cousin 代码行将检查 Calendar year 2013 的第一个季度(因为 Q1 CY 2012 是 Calendar year 2012 的第一个季度),然后写入 Q1 CY 2013 的 Internet sales amount。

COUSIN (
      [Date].[Calendar].[Calendar Quarter].[Q1 CY 2012],
      [Date].[Calendar].[Calendar Year].[CY 2013]
	)

MDX Cousin Function 示例 2

在此示例中,我们将使用 Cousin 函数查找 2013 年日历年的第四季度 January 2012 的堂兄弟成员。

SELECT 
 {
  [Date].[Calendar].[Month].[January 2012],
  COUSIN (
      [Date].[Calendar].[Month].[January 2012],
      [Date].[Calendar].[Calendar Quarter].[Q4 CY 2013]
         )
  } ON COLUMNS,
  [Measures].[Internet Sales Amount] ON ROWS
FROM [Adventure Works] 

MDX COUSIN FUNCTION 3

在上面的 MDX 查询中,我们在 Rows 上使用了 [Internet Sales amount]。

[Measures].[Internet Sales Amount] ON ROWS

SELECT 之后的第一个 MDX Cousin 代码行将检查 January 2012 月份并写入 January 2012 的 Internet sales amount。众所周知,一月是 Calendar year 2012 中 Q1 CY 2012 的第一个月。

[Date].[Calendar].[Month].[January 2012],

下面的代码行将检查 Calendar Quarter Q4 CY 2013 的第一个月(即十月),然后写入 October 2013 的 Internet sales amount。

COUSIN (
        [Date].[Calendar].[Month].[January 2012],
        [Date].[Calendar].[Calendar Quarter].[Q4 CY 2013]
        )

注意:如果我们用 Calendar semester 2 替换上述代码行中的 Calendar Quarter,MDX Query 将写入 semester 2 的第一个月。

使用 MDX Cousin Function 查找范围

在此示例中,我们将使用 Cousin Function 计算从一个点到另一个点的范围。

SELECT 
  [Measures].[Internet Sales Amount] ON COLUMNS,
  { 
   [Date].[Calendar].[Month].[January 2012]:
   COUSIN (
      [Date].[Calendar].[Month].[January 2012],
      [Date].[Calendar].[Calendar Quarter].[Q2 CY 2013]
	  )
  } ON ROWS
FROM [Adventure Works] 

MDX COUSIN FUNCTION 4

SELECT 之后的第一个代码行将检查 January 2012 月份并写入 January 2012 的 Internet sales amount。众所周知,一月是 Calendar year 2012 中 Q1 CY 2012 的第一个月。

[Date].[Calendar].[Month].[January 2012],

下面的 cousin 代码行将检查 Calendar Quarter Q2 CY 2013 的第一个月(即四月)。

 COUSIN (
      [Date].[Calendar].[Month].[January 2012],
      [Date].[Calendar].[Calendar Quarter].[Q2 CY 2013]
	 )

现在,上述语句之间的范围运算符(:)将写入从 January 2012 到 April 2013 的所有日历月。