MDX 數據操作 - RollupChildren 函式
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
多維度表達式 (MDX) RollupChildren 函式會匯總成員的子系,將不同的一元運算符套用至每個子系,並將這個匯總的值傳回為數位。 一元運算符可由與子成員相關聯的成員屬性提供,或者運算符可以是直接提供給函式的字串表達式。
RollupChildren 函式範例
在多維度表達式 (MDX) 語句中使用 RollupChildren 函式很簡單,但此函式對 MDX 查詢的影響可能很廣泛。
RollupChildren 函式的效果發生在設計為對現有 Cube 數據執行選擇性分析的 MDX 查詢中。 例如,下表包含 Net Sales 父成員的子成員清單,其一元運算符(以括弧中顯示的 UNARY_OPERATOR 成員屬性表示)。
父成員 | 子成員 |
---|---|
淨銷售額 | 國內銷售(+) 國內回報(-) 外國銷售(+) 外國回報(-) |
淨銷售父成員目前提供凈銷售額減去國內外銷售總值,而國內外回報減去積存的一部分。
然而,您想要提供國內外銷售額的快速和輕鬆預測加上10個%,忽視國內外回報。 若要計算此值,您可以使用 RollupChildren 函式,以下列兩種方式之一:使用自定義成員屬性或搭配 IIf 函式。
使用自訂成員屬性
如果匯總計算是經常執行的作業,一種方法是建立成員屬性,以儲存將用於特定函式之每個子系的運算符。 下表顯示有效的一元運算符,並描述預期的結果。
算子 | 結果 |
---|---|
+ | total = total + current child |
- | total = total - 目前的子系 |
* | total = total * current child |
/ | total = total / current child |
~ | 子系不會用於積存中。 忽略子系的值。 |
例如,可以建立稱為 SALES_OPERATOR 的成員屬性,並將下列一元運算符指派給該成員屬性,如下表所示。
父成員 | 子成員 |
---|---|
淨銷售額 | 國內銷售(+) 國內退貨(~) 外國銷售(+) 外國回報(~) |
有了這個新的成員屬性,下列 MDX 語句會快速且有效率地執行總銷售額估計作業(忽略國內外回報):
RollupChildren([Net Sales], [Net Sales].CurrentMember.Properties("SALES_OPERATOR")) * 1.1
呼叫 函式時,會使用儲存在成員屬性中的運算符,將每個子系的值套用至總計。 會忽略國內外傳回的成員,而 rollupChildren 函式所傳回
使用If函式
如果範例作業不常見,或作業只套用至一個 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,以提供國內外總銷售額預測值。