Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

WITH 節

SELECT 文で使用する 1 つ以上の計算メンバ、名前付きセット、またはパラメータを定義します。

構文および詳細

WITH with_details1 with_details2 ... select_statement

以下は、この指定の説明です。

  • select_statement は、SELECT を使用する文です。

  • with_details1with_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 ディメンジョンの redyellowblue の各メンバに対応するすべてのレコードを参照します。

    他のバリエーションについては、"DeepSee モデルの定義" の “計算メンバの定義” を参照してください。

  • 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

DeepSee ではまず、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 節は、要素を定義するクエリの間だけ使用可能な要素を定義します。

セッションの間中ずっと使用できる計算メンバおよび名前付きセットを定義するには、以下の文を使用します。

(すべてのセッションで使用可能な) キューブ定義の一部として計算メンバおよび名前付きセットを定義する方法の詳細は、"DeepSee モデルの定義" を参照してください。

FeedbackOpens in a new tab