條件式測試
您可以定義使用條件式測試或一系列條件式測試來控制計算流程的 Essbase 公式。除了流程命令之外,您可以使用根據測試結果傳回 TRUE 或 FALSE (1 或 0) 的布林函數。
IF 和 ENDIF 指令會定義條件區塊。只有在測試傳回 TRUE (1) 時,才會執行 IF 與 ENDIF 指令之間的公式。如果測試傳回 FALSE (0),您可以使用 ELSE 命令和 ELSEIF 命令來指定替代動作。只有在上一個測試傳回 FALSE (0) 時,才會執行每個 ELSE 指令之後的公式。只有在先前的 IF 指令傳回 FALSE (0) 時,才會測試每個 ELSEIF 指令之後的條件。
當您在計算命令檔中使用條件公式時,請將它括在括號中,並將它與資料庫大綱中的成員建立關聯,如本節中的範例所示。
若要搭配 IF 指令使用,您可以根據條件測試的結果,使用分別傳回 TRUE 或 FALSE (1 或 0) 的函數。這些函數稱為布林函數。
使用布林函數來決定要使用的公式。決策是根據目前成員組合的特性。例如,若要將特定計算限制為「產品」維度中包含輸入資料的成員,請在計算前面加上以 @ISLEV (Product,0) 為基礎的 IF 測試。
如果其中一個函數參數是跨維度成員,例如 @ISMBR (Sales -> Budget),則跨維度成員的所有部分都必須與目前儲存格的特性相符,才能傳回 TRUE (1) 的值。
下列布林函數指定條件:
表 17-3 測試條件的布林函數清單
| 函式 | 條件 |
|---|---|
|
目前成員具有指定的帳戶標籤 (例如,費用標籤) |
|
|
目前的成員為指定之成員的祖代 |
|
|
目前的成員是指定成員的祖代,或指定的成員本身 |
|
|
目前成員是所指定成員的子項 |
|
|
目前的成員是特定成員的子項,或是指定的成員本身 |
|
|
目前的成員為指定之成員的子代 |
|
|
目前的成員是指定成員的子代,或指定的成員本身 |
|
|
指定維度的目前成員在指定的層代中 |
|
|
指定維度的目前成員在指定的層次中 |
|
|
目前的成員符合任何指定的成員 |
|
|
目前成員為指定成員的父成員 |
|
|
目前的成員為指定成員的父項,或指定的成員本身 |
|
|
目前成員 (與指定成員屬於相同維度) 與指定成員位於相同層代 |
|
|
目前成員 (與指定成員相同的維度) 與指定成員位於相同的層次 |
|
|
目前的成員為指定之成員的同層級 |
|
|
目前的成員為指定之成員的同層級,或指定的成員本身 |
|
|
指定維度的目前成員有指定的 UDA 存在 |
當您將公式放置在資料庫大綱上時,您只能使用 IF、ELSE、ELSEIF 和 ENDIF 命令和布林函數來控制計算的流程。您可以在計算命令檔中使用其他控制命令。
如需有關如何開發計算命令檔以及如何使用它們來控制 Essbase 計算資料庫的方式的資訊,請參閱開發區塊儲存立方體的計算命令檔。