CROSSJOIN (MDX)
指定されたセットのクロス積で形成されたタプルのセットを返します。
返りタイプ
構文および詳細
CROSSJOIN(set_expression1, set_expression2)
以下は、この指定の説明です。
-
set_expression1 および set_expression2 は、メンバのセットに対して評価される式です。
これらのセットのうち、数字に評価されるメジャーまたは式を含めることができるのは 1 つのみであることに注意してください。数字に評価されるメジャーまたは式が両方のセットに含まれる場合は、Analytics エンジンによって [Two measures cannot be crossjoined] というエラーが出力されます。
この関数は、各セットのすべてのメンバを識別し、最初のセットの各メンバと 2 番目のセットの各メンバを組み合わせるタプルのセットを生成します。
Tip:
キーワード句 NON EMPTY は、この関数で特に有効です。このキーワード句は、任意のセット式の直前に使用できることに注意してください。
例
以下はその例です。
SELECT MEASURES.[%COUNT] ON 0, CROSSJOIN(diagd.MEMBERS, aged.[age group].MEMBERS) ON 1 FROM patients
Patient Count
1 None->0 to 29 3,839
2 None->30 to 59 3,615
3 None->60+ 971
4 asthma->0 to 29 308
5 asthma->30 to 59 282
6 asthma->60+ 113
7 CHD->0 to 29 1
8 CHD->30 to 59 93
9 CHD->60+ 229
10 diabetes->0 to 29 30
11 diabetes->30 to 59 246
12 diabetes->60+ 228
13 osteoporosis->0 to 29 *
14 osteoporosis->30 to 59 *
15 osteoporosis->60+ 200
一方、NON EMPTY キーワード句を追加すると以下のようになります。
SELECT MEASURES.[%COUNT] ON 0, NON EMPTY CROSSJOIN(diagd.MEMBERS, aged.[age group].MEMBERS) ON 1 FROM patients
Patient Count
1 None->0 to 29 3,839
2 None->30 to 59 3,615
3 None->60+ 971
4 asthma->0 to 29 308
5 asthma->30 to 59 282
6 asthma->60+ 113
7 CHD->0 to 29 1
8 CHD->30 to 59 93
9 CHD->60+ 229
10 diabetes->0 to 29 30
11 diabetes->30 to 59 246
12 diabetes->60+ 228
13 osteoporosis->60+ 200
別の例を示します。
SELECT CROSSJOIN([GenD].[H1].[Gender].Members,
{[Measures].[%COUNT],[Measures].[Avg Age]}) ON 0,[DiagD].[H1].[Diagnoses].Members ON 1
FROM [Patients]
Patient Coun Avg Age Patient Coun Avg Age
1 None 419 35.61 412 32.36
2 asthma 51 37.12 33 27.79
3 CHD 17 70.47 19 62.42
4 diabetes 25 63.96 21 57.67
5 osteoporosis 20 80.55 2 74.50