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 の主な概念 (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 を返します。 最初の 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])