WITH 節 (MDX)
構文および詳細
WITH with_details1 with_details2 ... select_statement
以下は、この指定の説明です。
-
select_statement は、SELECT を使用する文です。
-
with_details1、with_details2 (以降同様) の構文は、以下のいずれかです。
MEMBER calc_mem_definition
または、以下のようになります。
SET named_set_definition
または、以下のようになります。
%PARM named_parameter_definition
これらの従属節は、単一の WITH 節に組み合わせることができます。
Tip:WITH 従属節どうしを区切るコンマはありません。WITH 節と SELECT 文の間にもコンマはありません。
以下のセクションで、MEMBER、SET、%PARM の各従属節の詳細を説明します。
WITH MEMBER
WITH 節では、MEMBER は、クエリで使用する計算メンバを定義します。MEMBER 従属節の構文は以下のとおりです。
MEMBER calc_mem_details, FORMAT_STRING='format_details', SOLVE_ORDER=integer
この calc_mem_details は、以下のとおりです。
cube_name.[dimension_name].[new_member_name] AS 'value_expression'
および、
-
cube_name は、キューブの名前です。
-
dimension_name は、ディメンジョンの名前です。
-
new_member_name は、メンバの名前です。このメンバは、キューブ内で既に定義されている場合と定義されていない場合があります。定義されている場合、ここで指定される定義が優先されます。
-
value_expression は、通常は他のメンバへの参照に関連して、計算メンバを定義する MDX 式です。
以下はその例です。
MEASURES.[test score]/MEASURES.[%COUNT]
この計算メンバを使用するコンテキストでは、まず、そのコンテキストの Test Score および %COUNT メジャーが評価され、次に除算が実行されます。
別の例を示します。
%OR({colord.red,colord.blue,colord.yellow})
この新しいメンバは、ファクト・テーブルのレコードのうち、colord ディメンジョンの red、yellow、blue の各メンバに対応するすべてのレコードを参照します。
その他のバリエーションは、"計算メンバの定義" を参照してください。
-
FORMAT_STRING='format_details' は、値の表示方法を指定するオプションの節です。この節は、数値にのみ適用できます。"FORMAT_STRING 節" を参照してください。
-
SOLVE_ORDER=integer は、この計算メンバを評価する相対順序を指定するための、オプションの節です。この節は、両方の軸についての計算メンバがクエリに含まれている場合にのみ関連します。"SOLVE_ORDER 節" を参照してください。
最初の例は、WITH 節内で定義された計算メンバを表示します。
WITH MEMBER MEASURES.avgage AS 'MEASURES.age/MEASURES.%COUNT'
SELECT MEASURES.avgage ON 0, diagd.MEMBERS ON 1 FROM patients
1 None 33.24
2 asthma 34.79
3 CHD 67.49
4 diabetes 57.24
5 osteoporosis 79.46
システムは、まず、Age メジャーと %COUNT メジャーを評価してから、avgage メジャーの除算を実行します。
WITH SET
WITH 節では、SET は、クエリで使用する名前付きセットを定義します。SET 従属節の構文は以下のとおりです。
SET set_name AS 'set_expression'
-
set_name は、このセットの名前を付ける引用符なしの文字列です。
-
set_expression は、セットを参照する式です。
以下の例は、WITH 節内で定義された名前付きセットを表示します。
WITH SET testset AS '{homed.city.members}' SELECT MEASURES.[%COUNT] ON 0, testset ON 1 FROM patients
Patient Count
1 Cedar Falls 1,045
2 Centerville 1,069
3 Cypress 1,150
4 Elm Heights 1,104
5 Juniper 1,155
6 Magnolia 1,111
7 Pine 1,138
8 Redwood 1,111
9 Spruce 1,117
WITH %PARM
WITH 節では、%PARM は、クエリで使用する名前付きパラメータを定義します。%PARM 従属節の構文は以下のとおりです。
%PARM parameter_name AS 'value:default_value'
または、以下のようになります。
%PARM parameter_name AS 'value:default_value,caption:label'
-
parameter_name は、パラメータの名前です。
-
default_value は、パラメータの既定値です。
-
label は、このパラメータの値の入力を求めるときに使用するキャプションです。
MDX シェル内でクエリを実行すると、名前付きパラメータがあればその値を入力するように求められます。
次に、クエリ自体の中のパラメータを参照するには、@parameter_name を使用します。
以下はその例です。
>>WITH %PARM c as 'value:Pine' select homed.[city].@c ON 0 FROM patients
Please supply parameter value(s) for this query:
C [Pine]:
Pine
1,073
---------------------------------------------------------------------------
Elapsed time: 2.136337s
>>WITH %PARM c as 'value:Pine' select homed.[city].@c ON 0 FROM patients
Please supply parameter value(s) for this query:
C [Pine]:Magnolia
Magnolia
1,113
---------------------------------------------------------------------------
Elapsed time: 2.627897s
>>WITH %PARM c as 'value:Pine,caption:city' select homed.[city].@c ON 0 FROM patients
Please supply parameter value(s) for this query:
city [Pine]:
Pine
1,073
---------------------------------------------------------------------------
Elapsed time: 2.235228s
>>WITH %PARM c AS 'value:5,caption:count' SELECT TOPCOUNT(birthd.decade.MEMBERS, @c) ON 1 FROM patients
Please supply parameter value(s) for this query:
count [5]:3
1 1970s 1,593
2 1960s 1,505
3 2000s 1,442
---------------------------------------------------------------------------
Elapsed time: 1.207581s
関連項目
WITH 節は、要素を定義するクエリの間だけ使用可能な要素を定義します。
セッションの間中ずっと使用できる計算メンバおよび名前付きセットを定義するには、以下の文を使用します。
(すべてのセッションで使用可能な) キューブ定義の一部として計算メンバおよび名前付きセットを定義する方法の詳細は、"InterSystems Business Intelligence のモデルの定義" を参照してください。