返回一个或多个集合的叉积。
Syntax
Standard syntax
Crossjoin(Set_Expression1 ,Set_Expression2 [,...n] )
Alternate syntax
Set_Expression1 * Set_Expression2 [* ...n]
Arguments
Set_Expression1
一个有效的多维表达式(MDX)表达式,返回集合。
Set_Expression2
一个有效的多维表达式(MDX)表达式,返回集合。
Remarks
交叉连接函数返回两个或多个指定集合的叉积。 结果集合中元组的顺序取决于要连接的集合顺序及其成员的顺序。 例如,当第一个集合由{x1, x2,...,xn}组成,第二个集合由{y1, y2, ...,y n}组成时,这两个集合的叉积为:
{(x1, y1), (x1, y2),...,(x1,y n), (x2, y1), (x2, y2),...,
(x2, yn),..., (xn, y1), (xn, y2),..., (xn, yn)}
Important
如果交叉连接中的集合由同一维不同属性层级的元组组成,该函数只返回实际存在的元组。 更多信息请参见 MDX(分析服务)关键概念。
示例
以下查询展示了在查询列轴和行轴上使用交叉连接函数的简单示例:
SELECT
[Customer].[Country].Members *
[Customer].[State-Province].Members
ON 0,
Crossjoin(
[Date].[Calendar Year].Members,
[Product].[Category].[Category].Members)
ON 1
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
以下示例展示了当同一维度的不同层级交叉连接时发生的自动过滤:
SELECT
Measures.[Internet Sales Amount]
ON 0,
//Only the dates in Calendar Years 2003 and 2004 will be returned here
Crossjoin(
{[Date].[Calendar Year].&[2003], [Date].[Calendar Year].&[2004]},
[Date].[Date].[Date].Members)
ON 1
FROM [Adventure Works]
以下三个示例返回相同的结果——美国各州的互联网销售金额。 前两个使用了两个交叉连接语法,第三个则展示了如何使用WHERE子句返回相同信息。
示例 1
SELECT CROSSJOIN
(
{[Customer].[Country].[United States]},
[Customer].[State-Province].Members
) ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
示例 2
SELECT
[Customer].[Country].[United States] *
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
示例 3
SELECT
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE (Measures.[Internet Sales Amount],
[Customer].[Country].[United States])