Share via


Crossjoin (MDX)

1 つ以上のセットのクロス積を返します。

構文

  
Standard syntax  
Crossjoin(Set_Expression1 ,Set_Expression2 [,...n] )  
  
Alternate syntax  
Set_Expression1 * Set_Expression2 [* ...n]  

引数

Set_Expression1
セットを返す有効な多次元式 (MDX) 式。

Set_Expression2
セットを返す有効な多次元式 (MDX) 式。

解説

Crossjoin 関数は、指定された 2 つ以上のセットのクロス積を返します。 結果のセット内のタプルの順序は、結合するセットの順序とそのメンバーの順序によって異なります。 たとえば、最初のセットが {x1、x2,...,xn} で構成され、2 番目のセットが {y1、y2、...、yn} で構成されている場合、これらのセットのクロス積は次のようになります。

{(x1, y1), (x1, y2),...,(x1, yn), (x2, y1), (x2, y2),...,

(x2, yn),..., (xn, y1), (xn, y2),..., (xn, yn)}

重要

クロス結合内のセットが同一ディメンションの異なる属性階層の組から構成されている場合、この関数は実際に存在する組のみを返します。 詳細については、「 MDX の主要な概念 (Analysis Services)」を参照してください。

次のクエリは、クエリの [列] 軸と [行] 軸で Crossjoin 関数を使用する簡単な例を示しています。

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]

次の 3 つの例では、米国内の状態の Internet Sales Amount by state という同じ結果が返されます。 最初の 2 つでは 2 つのクロス結合構文が使用され、3 つ目は 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])  

参照

MDX 関数リファレンス (MDX)