多維度表達式(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,以提供國內和國外的總銷售額預測值。