%OR (MDX)
効率を上げるため、またカウントの重複を回避するために、複数メンバを単一のメンバに結合できます。この関数は、インターシステムズによる MDX への拡張機能です。
返りタイプ
この関数は、メンバを返します。このメンバの名前は、メンバの名前の後に +Others が続いたものになります。
構文および詳細
%OR(set_expression)
以下は、この指定の説明です。
-
set_expression は、メンバまたはタプルのセットに対して評価される式です。この式は、中括弧で囲む必要があります。
この関数を使用すると、指定したメンバまたはタプルを単一のユニットに結合できます。
例
多くの場合は、WHERE 節によって複数メンバのセットを含める必要があります。以下はその例です。
SELECT gend.MEMBERS ON 1 FROM patients WHERE {allerd.[ant bites],allerd.soy,allerd.wheat}
1 Female 56
2 Male 59
ただし、このクエリ構文では、システムがクエリの結果を複数回 (WHERE 節に含まれる項目ごとに 1 回) 評価してから、それらを結合することになります。そのため、実行時間が長くなる可能性や重複して項目をカウントする可能性があります (この例では、特定の患者が、WHERE 節のアレルギーごとに 1 回ずつ、合計 3 回カウントされることがあります)。
%OR 関数を使用して、このクエリを以下のように書き換えることができます。
SELECT gend.MEMBERS ON 1 FROM patients WHERE %OR({allerd.[ant bites],allerd.soy,allerd.wheat})
1 Female 55
2 Male 57
前よりも数が減っていることに注意してください。これは、このクエリでは患者を重複してカウントしていないからです。
異なるレベルのメンバ (またはタプル) を含むセットで %OR を使用できます。例えば以下のようになります。
SELECT NON EMPTY [Measures].[%COUNT] ON 0 FROM [Patients]
WHERE %OR({[AgeD].[H1].[Age Bucket].&[80+],[DiagD].[H1].[Diagnoses].&[CHD]})
Patient Count
71
この関数を列軸または行軸に使用すると、この関数がメンバを返すことを確認できます。
SELECT %OR({allerd.[ant bites],allerd.soy,allerd.wheat}) ON 1 FROM patients
ant bites+Others 112
%OR 関数には、いくつかの利点があります。
-
セットのメンバは、1 つのユニットとして扱われます。
-
効率を上げるために、処理の初期部分でメンバの組み合わせが行われます。
-
%OR は、単純なタプル式を形成するために、他のフィルタと (内部的に) 結合できる単一のメンバを返します。
"計算メンバの定義" の例も参照してください。