共用方式為


使用 RollupChildren 函數 (MDX)

多維度運算式 (MDX) RollupChildren 函數可積存成員的子系,將不同的一元運算子套用至每個子系,然後將此積存的值以數字傳回。 一元運算子可由與子成員相關的成員屬性提供,或者可能是字串運算式直接將運算子提供給函數。

RollupChildren 函數範例

要說明使用多維度運算式 (MDX) 陳述式的 RollupChildren 函數是很簡單,但此函數對 MDX 查詢的影響相當廣泛。

RollupChildren 函數會對為了對現有的 Cube 資料,執行選擇性分析而設計 MDX 查詢的產生影響。 例如,下表包含 Net Sales 父成員的子成員清單,以及在括號中顯示它們的一元運算子 (以 UNARY_OPERATOR 成員屬性代表)。

父成員

子成員

Net Sales

Domestic Sales (+)

Domestic Returns (-)

Foreign Sales (+)

Foreign Returns (-)

Net Sales 父成員目前是淨銷售量的總和減去國內外總銷售量值,而國內外退貨量則當做積存減去。

但是,您想要外加 10% 以簡單、快速地預測國內外銷售總額,而不理會國內外的退貨量。 若要計算此值,您能以下其中一個方式使用 RollupChildren 函數:利用自訂成員屬性,或利用IIf 函數。

使用自訂成員屬性

如果將會經常執行積存計算作業,其中一個方法是建立一個成員屬性,儲存供每個子系當做特定函數使用的運算子。 下表顯示有效的一元運算子,而且描述了預期的結果。

運算子

結果

+

總計 = 總計 + 目前的子系

-

總計 = 總計 - 目前的子系

*

總計 = 總計 * 目前的子系

/

總計 = 總計 / 目前的子系

~

子系不會被用在積存中。 子系的值會被忽略。

例如,您可以建立一個稱為 SALES_OPERATOR 的成員屬性,將以下的一元運算子指派給此成員屬性,如下表所示。

父成員

子成員

Net Sales

Domestic Sales (+)

Domestic Returns (~)

Foreign Sales (+)

Foreign Returns (~)

有了這個新的成員屬性,以下 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)