條件式測試

您可以定義使用條件式測試或一系列條件式測試來控制計算流程的 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 測試條件的布林函數清單

函式 條件

@ISACCTYPE

目前成員具有指定的帳戶標籤 (例如,費用標籤)

@ISANCEST

目前的成員為指定之成員的祖代

@ISIANCEST

目前的成員是指定成員的祖代,或指定的成員本身

@ISCHILD

目前成員是所指定成員的子項

@ISICHILD

目前的成員是特定成員的子項,或是指定的成員本身

@ISDESC

目前的成員為指定之成員的子代

@ISIDESC

目前的成員是指定成員的子代,或指定的成員本身

@ISGEN

指定維度的目前成員在指定的層代中

@ISLEV

指定維度的目前成員在指定的層次中

@ISMBR

目前的成員符合任何指定的成員

@ISPARENT

目前成員為指定成員的父成員

@ISIPARENT

目前的成員為指定成員的父項,或指定的成員本身

@ISSAMEGEN

目前成員 (與指定成員屬於相同維度) 與指定成員位於相同層代

@ISSAMELEV

目前成員 (與指定成員相同的維度) 與指定成員位於相同的層次

@ISSIBLING

目前的成員為指定之成員的同層級

@ISISIBLING

目前的成員為指定之成員的同層級,或指定的成員本身

@ISUDA

指定維度的目前成員有指定的 UDA 存在

當您將公式放置在資料庫大綱上時,您只能使用 IF、ELSE、ELSEIF 和 ENDIF 命令和布林函數來控制計算的流程。您可以在計算命令檔中使用其他控制命令。

如需有關如何開發計算命令檔以及如何使用它們來控制 Essbase 計算資料庫的方式的資訊,請參閱開發區塊儲存立方體的計算命令檔