成員相關函數

在公式中使用 Essbase 成員函式,以指定成員清單和範圍、產生成員清單、操控成員名稱,以及使用跨維度的成員組合。

指定成員清單與範圍

使用某些 Essbase 計算函數時,您可能需要輸入大綱成員清單和 (或) 成員範圍。清單可以是以逗號分隔的文字成員名稱清單,也可以由計算函式傳回。可以使用冒號語法指定範圍,也可以由計算函數傳回範圍。

例如, @ISMBR 函數會測試目前計算的成員是否符合指定成員的任何清單或範圍。

下表列出指定成員的語法:

表格 17-8 指定成員清單和範圍的語法

成員清單或範圍 語法

一個成員

成員名稱。

舉例而言:

Mar2001

成員清單

以逗號分隔 (,) 的成員名稱清單。

舉例而言:

Mar2001, Apr2001, May2001

相同層次的所有成員範圍,介於與包含兩個定義成員之間

以冒號 (:) 分隔的兩個定義成員名稱。舉例而言:

Jan2000:Dec2000

相同層代中所有成員的範圍,介於與包含兩個定義成員之間

兩個定義成員名稱,以兩個冒號 (::) 分隔。

舉例而言:

Q1_2000::Q4_2000

功能產生的成員清單或成員範圍

如需成員清單內容與對應函式的清單,請參閱產生成員清單

範圍和清單的組合

請以逗號 (,) 分隔每個範圍、清單及函數。

舉例而言:

Q1_97::Q4_98, FY99, FY2000

@SIBLINGS(Dept01), Dept65:Dept73, Total_Dept

如果您未在需要的函式中指定成員清單或成員範圍, Essbase 會使用標記為時間之維度的層級 0 成員。如果沒有維度標記為時間, Essbase 會顯示錯誤訊息。

產生成員清單

Essbase 成員集函式可讓您產生以指定成員或成員清單為基礎的成員清單。

表格 17-9 成員集函數清單

函式 成員清單的內容

@ALLANCESTORS

所有指定成員的祖系,包括指定成員的祖系為共用的成員。此函數不包含指定的成員。

@IALLANCESTORS

所有指定成員的祖項,包括指定成員的祖項作為共用的成員。此函式包括指定的成員。

@ANCEST

指定層代或層級之指定成員的前代

@ANCESTORS

指定成員的所有祖項 (選擇性上至指定的層代或層級),但不包括指定的成員

@IANCESTORS

指定成員的所有祖代 (選擇性,直到指定的層代或層級),包括指定的成員

@LANCESTORS

指定成員清單的所有祖代 (選擇性,直到指定的層代或層級),但不包括指定的成員

@ILANCESTORS

指定成員清單的所有祖代 (選擇性,直到指定的層代或層級),包括指定的成員

@ 屬性

與指定屬性維度成員相關聯的所有基礎維度成員

@WITHATTR

與符合指定條件之屬性關聯的所有基礎成員

@BETWEEN

名稱字串值介於兩個指定字串記號之間,且包含兩個指定字串記號的所有成員

@CHILDREN

指定成員的所有下階,但不包含指定成員

@ICHILDREN

指定成員的所有下階,包括指定成員

@CURRMBR

為指定維度計算的目前成員

@DESCENDANTS

指定成員的所有子代 (選擇性上至指定的層代或層級),但不包括指定的成員或共用成員的子代

@IDESCENDANTS

指定成員的所有子代 (選擇性上至指定的層代或層級),包括指定的成員,但不包括共用成員的子代

@LDESCENDANTS

指定成員清單的所有子代 (選擇性地向下至指定的層代或層級),但不包括指定的成員

@ILDESCENDANTS

指定成員清單的所有子代 (選擇性地向下至指定的層代或層級),包括指定的成員

@RDESCENDANTS

指定成員的所有子代 (選擇性上至指定的層代或層級),包括共用成員的子代,但不包括指定的成員

@IRDESCENDANTS

指定成員的所有子代 (選擇性上至指定的層代或層級),包括共用成員的指定成員和子代

@EQUAL

符合指定記號名稱的成員名稱

@NOTEQUAL

與指定記號名稱不符的成員名稱

@EXPAND

為成員清單中的每一個成員呼叫成員集函式,以展開成員搜尋

@GENMBRS

指定維度中指定層代的所有成員

@LEVMBRS

指定維度中指定層級的所有成員

@LIKE

符合指定樣式的成員名稱。

@ 清單

需要多個清單引數的函數所要處理的個別成員清單

@MATCH

符合指定萬用字元選擇的所有成員

@MBRCOMPARE

符合比較條件的成員名稱

@MBRCOMPARE

指定成員的父系

@MEMBER

已提供作為字元字串之名稱的成員

@MERGE

要由另一個函式處理的兩個成員清單合併清單

@PARENT

在指定維度中計算之目前成員的父項

@RANGE

從某個維度跨指定成員的成員清單,該維度具有來自另一個維度的指定成員範圍

@ 移除

已移除部分成員的成員清單

@RELATIVE

指定產生或層次的所有成員,在指定成員的上方或下方

@ 共用

識別指定成員之間所有共用成員的成員清單

@SIBLINGS

指定成員的所有同層級,但未指定成員

@ISIBLINGS

指定成員的所有同層級,包括指定的成員

@LSIBLINGS

資料庫大綱中指定成員之前的所有同層級,但未指定成員

@RSIBLINGS

資料庫大綱中指定成員之後,但未指定成員的所有同層級

@ILSIBLINGS

資料庫大綱中指定成員之前的所有同層級,包括指定的成員

@IRSIBLINGS

資料庫大綱中指定成員之後的所有同層級,包括指定的成員

@SHIFTSIBLING

與成員的指定距離同層級

@NEXTSIBLING

成員的下一個或最右邊的同層級

@PREVSIBLING

成員的上一個 (或最左側) 同層級

@UDA

Essbase 伺服器上定義通用 UDA 的所有成員

@XRANGE

可識別相同層次之兩個指定單一或跨維度成員之間 (含) 之成員範圍的成員清單

操控成員名稱

您可以在區塊儲存公式和計算命令檔中使用 Essbase 成員名稱作為字元字串。

下表列出字元字串處理函數:

表 17-10 字元字串操控函數清單

函式 字元字串操控

@CONCATENATE

建立一個字元字串,此字串是將成員名稱或指定的字元字串附加到另一個成員名稱或字元字串的結果

@NAME

傳回成員名稱作為字串

@SUBSTRING

從其他字元字串或成員名稱傳回字元的子字串

使用跨維度的成員組合

Essbase 公式中的跨維度運算子 -> 是參照特定成員組合之多維資料值的一種方式。FIX 指令可能較佳效能。

使用跨維度運算子指向特定成員組合的資料值。使用連字號 (-) 與大於符號 (>) 建立跨維運算子。請勿在跨維度運算子與成員之間包含空格。

附註:

使用跨維度運算子可能會影響重大效能。如需最佳化準則,請參閱成員公式中的跨維度運算子

下面是多維立方體的簡化圖,其中 Jan 是 X 軸上的第一個資料欄,Sales 是 Y 軸上的第四個和最頂端的資料列,而 Actual 是 Z 軸上的第一個資料列。在此範例中,Sales -> Jan -> Actual 是單一資料值的交集。

圖 17-2 指定單一資料值


此圖像顯示一個立方體,其中會顯示單一資料值的交集,如表格前面的文字所述。

下列範例將雜項費用配置給每個市場中的每個產品,說明如何使用跨維度運算子。所有市場中所有產品的 Misc_Expenses 值都已知。公式會將總 Misc_Expenses 值的百分比分攤至每個「產品 -> 市場」組合。分配是根據每個市場中每項產品的銷售價值而定。

Misc_Expenses = Misc_Expenses -> Market -> Product * 
   (Sales / ( Sales -> Market -> Product));

Essbase 會循環資料庫,執行下列計算:

  1. 將目前成員組合的「銷售」值除以所有市場和所有產品的「銷售」值總計 (銷售 -> 市場 -> 產品)。

  2. 將步驟 1 中計算的值乘以所有市場和所有產品的 Misc_Expenses 值 (Misc_Expenses -> Market -> Product)。

  3. 將結果配置到目前成員組合的 Misc_Expenses。