セット式 (MDX)
詳細
set expression の一般的な構文は以下のとおりです。
{expression1, expression2, ...}
このリストには、項目を任意の数だけ含めることができます。InterSystems MDX では、リスト内の項目が 1 つだけの場合、中括弧を省略できます。
このリストでは、expression1、expression2 (以降同様) の形式は以下のいずれかです。
-
メンバ式。
-
以下のように指定された、ある範囲のメンバ。
member1:member2
この式は、指定された 2 つのメンバとその間のすべてのメンバで構成されるセットを返します (これらのメンバを含むレベル内のメンバの順序が指定されている場合)。これらのメンバは、同じレベルに属している必要があります。
以下はその例です。
birthd.year.1960:birthd.year.1980
member2 では、ディメンジョン、階層、およびレベルの識別子を省略できます。以下はその例です。
birthd.year.1960:1980
-
セットを返す MDX 関数を使用する式。以下に例を示します。
homed.zip.MEMBERS
MEMBERS、NONEMPTYCROSSJOIN、ORDER など、MDX 関数の多くがセットを返します。
%TERMLIST はセットを返せることに注意してください。
-
別のセット式。
-
名前付きセットの名前。次のセクションを参照してください。
-
タプル式。
(MDX の他の実装では、セット内の各タプルにおいて、セット内の他のタプルと同じ順序でディメンジョンを使用する必要があります。例えば、最初のタプルがその最初のリスト項目にディメンジョン A を使用している場合、他のすべてのタプルも同様にする必要があります。InterSystems MDX には、この制約はありません。同様に、MDX の他の実装では、タプルと他のタイプのセット要素の組み合わせをセットに含めることはできません。InterSystems MDX には、この制約もありません)。
-
セット式を含むピボット変数への参照。ピボット変数を参照するには、以下の構文を使用します。
$VARIABLE.variablename
variablename は論理変数名です。この式は角括弧で囲まないでください。この構文では大文字と小文字は区別されません。ピボット変数名も同様です。
ピボット変数の定義に関する詳細は、"ピボット変数の定義と使用" を参照してください。
キーワード句 NON EMPTY を任意のセット式の先頭に付加できます。以下はその例です。
NON EMPTY {birthd.year.1960:1980}
NON EMPTY birthd.year.1960:1980
NON EMPTY {homed.zip.MEMBERS}
NON EMPTY homed.zip.MEMBERS
NON EMPTY キーワード句は、セットの空の要素を抑制します。すなわち、セットが評価され、空の要素は削除されます。このキーワードは、CROSSJOIN を使用し、フィルタによって要素が NULL になる可能性があるシナリオで特に役に立ちます。
名前付きセット
名前付きセットは、セット名とセット式という 2 つの要素で構成されます。名前付きセットは、以下の 2 つの方法で定義できます。
-
クエリの WITH 節の中。このセット名は、クエリの残りの部分で使用可能ですが、他のクエリでは使用できません。
-
CREATE SET 文の中。この名前付きセットは、セッションの残りの部分 (MDX シェルのセッションの残りの部分など) で使用可能です。
用途
セット式は、以下の方法で使用できます。