次の方法で共有


RollupChildren 関数 (MDX) の操作

多次元式 (MDX) RollupChildren [Script for Search and Replace] 関数は、メンバーの子をロールアップし、各子に異なる単項演算子を適用して、このロールアップの値を数値として返します。 単項演算子は、子メンバーに関連付けられたメンバー プロパティで指定することも、関数に直接提供される文字列式にすることもできます。

RollupChildren 関数の例

多次元式 (MDX) ステートメントでの RollupChildren 関数の使用は簡単に説明できますが、この関数が MDX クエリに与える影響は広範囲に及ぶ可能性があります。

RollupChildren関数の効果は、既存のキューブ データに対して選択的分析を実行するように設計された MDX クエリで発生します。 たとえば、次の表には、Net Sales 親メンバーの子メンバーの一覧が含まれています。単項演算子 ( UNARY_OPERATOR メンバー プロパティで表されます) はかっこで囲まれています。

親メンバー 子メンバー
売上高 国内売上 (+)

国内返品 (-)

海外売上 (+)

外国リターン (-)

現在、Net Sales の親メンバーは、純売上高の合計から国内および外国の総売上値を差し引き、ロールアップの一部として国内外のリターンを減算します。

国内外の総売上高に10%を加算した、迅速かつ簡単な予測を提供したいと考えています。ただし、国内および海外のリターンは無視します。 この値を計算するには、カスタム メンバー プロパティと IIf 関数の 2 つの方法のいずれかで、RollupChildren関数を使用できます。

カスタム メンバー プロパティの使用

ロールアップ計算が頻繁に実行される操作である場合、1 つの方法は、特定の関数の各子に使用される演算子を格納するメンバー プロパティを作成することです。 次の表に、有効な単項演算子を示し、予想される結果を示します。

オペレーター 結果
+ 合計 = 合計 + 現在の子
- total = total - 現在の子
* 合計 = 合計 * 現在の子ノード
/ total = 合計 / 現在の子供
~ 子はロールアップでは使用されません。 子供の価値は無視されます。

たとえば、次の表に示すように、 SALES_OPERATOR というメンバー プロパティを作成し、次の単項演算子をそのメンバー プロパティに割り当てます。

親メンバー 子メンバー
純売上高 国内売上 (+)

国内返品 (~)

海外売上 (+)

外国返品 (~)

この新しいメンバー プロパティを使用すると、次の MDX ステートメントによって、総売上見積もり操作が迅速かつ効率的に実行されます (外国および国内の返品は無視されます)。

RollupChildren([Net Sales], [Net Sales].CurrentMember.Properties("SALES_OPERATOR")) * 1.1  

関数が呼び出されると、メンバー プロパティに格納されている演算子を使用して、各子の値が合計に適用されます。 国内および国外の戻り値のメンバーは無視され、 RollupChildren 関数によって返されるロールアップの合計に 1.1 が乗算されます。

IIf 関数の使用

操作例が一般的でない場合、または操作が 1 つの MDX クエリにのみ適用される場合は、RollupChildren関数と共に IIf 関数を使用して同じ結果を提供できます。 次の MDX クエリは、前の MDX の例と同じ結果を提供しますが、カスタム メンバー プロパティを使用しなくても実行されます。

RollupChildren([Net Sales], IIf([Net Sales].CurrentMember.Properties("UNARY_OPERATOR") = "-", "~", [Net Sales].CurrentMember.Properties("UNARY_OPERATOR))) * 1.1  

MDX ステートメントは、子メンバーの単項演算子を調べます。 単項演算子を減算に使用する場合 (国内および外国の戻り値のメンバーの場合と同様)、 IIf 関数はチルダ (~) 単項演算子を置き換えます。 それ以外の場合、 IIf 関数は子メンバーの単項演算子を使用します。 最後に、返されたロールアップの合計に 1.1 を乗算して、国内および海外の総売上予測値を指定します。

こちらもご覧ください

データの操作 (MDX)