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?

%OR

効率を上げるため、またカウントの重複を回避するために、複数メンバを単一のメンバに結合できます。この関数は、インターシステムズによる 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

ただし、このクエリ構文では DeepSee がクエリの結果を複数回 (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

前よりも数が減っていることに注意してください。これは、このクエリでは患者を重複してカウントしていないからです。

リリース 2014.1 以降、異なるレベルのメンバ (またはタプル) を含むセットで %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 は、単純なタプル式を形成するために、他のフィルタと (内部的に) 結合できる単一のメンバを返します。

"DeepSee モデルの定義" の “計算メンバの定義” の例も参照してください。

FeedbackOpens in a new tab