多次元式 (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 を乗算して、国内および海外の総売上予測値を指定します。