WHERE 節 (MDX)
構文および詳細
select_statement WHERE set_expression
以下は、この指定の説明です。
-
select_statement は、SELECT を使用する文です。
-
set_expression は、メンバまたはタプルのセットを返す式です。
set_expression の代わりに、メジャー検索式を使用できます。この場合の WHERE の動作については、例を参照してください。
システムでは、必要に応じてタイプが自動的に変換されるため、セット式の代わりに、単一のメンバ式またはタプル式を使用することもできます。
各セット要素は別のスライサ軸として使用され、(すべての %FILTER 節の) すべてのスライサ軸の結果がいっしょに集約されます。これは軸のたたみ込みのプロセスです (フィルタはクエリ軸と見なされます)。軸のたたみ込みを実行すると、どのスライサ軸にも NULL の結果がないソース・レコードは複数回カウントされます。
軸のたたみ込みでは、キューブの定義での指定に従い、対象としているメジャーの集約メソッドに基づいて値が組み合わされます (ここの例では、%COUNT が追加されます)。
詳細は、"Business Intelligence クエリ・エンジンの仕組み" の "軸のたたみ込み" を参照してください。
例
以下の 2 つの SELECT 文の例を比較します。1 つは WHERE 節を使用した文、もう 1 つは WHERE 節を使用していない文です。
SELECT MEASURES.[%COUNT] ON 0, homed.city.MEMBERS ON 1 FROM patients
Patient Count
1 Cedar Falls 1,039
2 Centerville 1,107
3 Cypress 1,096
4 Elm Heights 1,093
5 Juniper 1,150
6 Magnolia 1,092
7 Pine 1,157
8 Redwood 1,125
9 Spruce 1,141
前のクエリは、各都市の患者数を表示します。一方、以下のクエリを考えてみます。これは、各都市の男性の患者数を示します。
SELECT MEASURES.[%COUNT] ON 0, homed.city.MEMBERS ON 1 FROM patients WHERE gend.male
Patient Count
1 Cedar Falls 509
2 Centerville 569
3 Cypress 517
4 Elm Heights 531
5 Juniper 574
6 Magnolia 527
7 Pine 569
8 Redwood 553
9 Spruce 557
WHERE 節に複数の項目がある場合の効果を例示するために、まず以下のクエリを考えてみます。
SELECT MEASURES.[%COUNT] ON 0, homed.city.MEMBERS ON 1 FROM patients WHERE colord.green
Patient Count
1 Cedar Falls 137
2 Centerville 129
3 Cypress 150
4 Elm Heights 128
5 Juniper 126
6 Magnolia 143
7 Pine 155
8 Redwood 148
9 Spruce 147
ここで以下のクエリを考えてみます。これは、WHERE 節のセット要素として、gend.male と colord.green の両方を使用しています。
SELECT MEASURES.[%COUNT] ON 0, homed.city.MEMBERS ON 1 FROM patients WHERE {gend.male,colord.green}
Patient Count
1 Cedar Falls 646
2 Centerville 698
3 Cypress 667
4 Elm Heights 659
5 Juniper 700
6 Magnolia 670
7 Pine 724
8 Redwood 701
9 Spruce 704
例えば、Cedar Falls の結果を比較すると、このクエリが、男性患者の結果および好きな色が緑である患者の結果を加算していることがわかります。代わりに、好きな色が緑である男性患者の結果を表示するには、以下のように、WHERE 節で、CROSSJOIN とタプル式のいずれかを使用します。
SELECT MEASURES.[%COUNT] ON 0, homed.city.MEMBERS ON 1 FROM patients
WHERE CROSSJOIN(gend.male,colord.green)
Patient Count
1 Cedar Falls 56
2 Centerville 65
3 Cypress 80
4 Elm Heights 59
5 Juniper 73
6 Magnolia 74
7 Pine 82
8 Redwood 70
9 Spruce 74
以下の例は、WHERE 節でタプル式を使用しています。
SELECT MEASURES.[%COUNT] ON 0, homed.city.MEMBERS ON 1 FROM patients WHERE (gend.male,aged.60)
Patient Count
1 Cedar Falls 3
2 Centerville 9
3 Cypress 7
4 Elm Heights 1
5 Juniper 8
6 Magnolia 2
7 Pine 5
8 Redwood 6
9 Spruce 3
WHERE 節は、特定のメジャーを表示する方法として使用することもできます。
SELECT gend.gender.MEMBERS ON 0 FROM patients WHERE MEASURES.[avg test score]
Female Male
All Patients 74.78 74.46
ただし、メジャー名は表示されません。
WHERE 節をメジャー検索式で使用する場合、この節は、ファクト・テーブルの行のうち、指定された条件を満たした行のみを使用します (メジャー検索式は、インターシステムズによる MDX への拡張機能で、ファクト・テーブル自体のメジャー値を考慮するものです)。
SELECT MEASURES.[%COUNT] ON 0 FROM patients WHERE %SEARCH.&[[MEASURES].[age]<10]
Patient Count
1,370
関連項目
"%FILTER 節" を参照してください。