次の方法で共有


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} である場合、2 つのセットのクロス積は次のようになります。

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

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

重要な注意事項重要

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

次のクエリでは、クエリの列軸と行軸での 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 を返します。最初の 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])