在 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 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 查询中,我们在 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 查询中,我们在 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]
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 的所有日历月。

