共用方式為


使用 RollupChildren 函式(MDX)進行操作

多維度表達式(MDX)RollupChildren [搜尋與取代的腳本] 函式用於聚合某成員的子系,將不同的一元運算子套用至每個子系,並將此聚合的值以數字形式返回。 一元運算符可由與子成員相關聯的成員屬性提供,或者運算符可以是直接提供給函式的字串表達式。

RollupChildren 函式範例

在多維度表達式(MDX)語句中,使用RollupChildren函式的說明很簡單,但該函式對於MDX查詢的影響可能非常廣泛。

函式的效果 RollupChildren 會在 MDX 查詢中應用,該查詢旨在對現有的 cube 資料進行選擇性分析。 例如,下表包含 Net Sales 父成員的子成員清單,其一元運算元(由 UNARY_OPERATOR 成員屬性表示)顯示在括弧中。

父成員 子成員
淨銷售額 國內銷售(+)

國內回報(-)

外國銷售(+)

外國收益(-)

淨銷售父成員目前提供的是扣除國內和國外銷售總值後的淨銷售額,並進一步減去國內外回報,作為匯總過程的一部分。

然而,您想要提供國內外銷售額的快速和輕鬆預測加上10個%,忽視國內外回報。 若要計算此值,您可以使用 RollupChildren 函式的兩種方式之一:透過自定義成員屬性或透過 IIf 函式。

使用自訂成員屬性

如果匯總計算是經常執行的作業,一種方法是建立成員屬性,以儲存將用於特定函式之每個子系的運算符。 下表顯示有效的一元運算符,並描述預期的結果。

操作員 結果
+ total = total + current child # 把目前的子項目加到總數中
- total = total - 目前的子項
* 總計 = 總計 * 當前子項
/ total = total / current child
~ 子項目不會用于彙總中。 孩子的價值被忽略。

例如,可以建立名為 SALES_OPERATOR 的成員屬性,並將下列一元運算符指派給該成員屬性,如下表所示。

父成員 子成員
淨銷售額 國內銷售(+)

國內退貨(~)

外國銷售(+)

外國收益(~)

有了這個新的成員屬性,下列 MDX 語句會快速且有效率地執行總銷售額估計作業(忽略國內外回報):

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

呼叫 函式時,會使用儲存在成員屬性中的運算符,將每個子系的值套用至總計。 國內外回報的成員會被忽略,然後由 RollupChildren 函式返回的匯總總計會乘以 1.1。

使用IIf函式

如果範例操作不常見,或操作只適用於一個 MDX 查詢,則可以使用 IIf 函數搭配 RollupChildren 函數,以提供相同的結果。 下列 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)