瞭解基本計算指令碼語法

設計 Essbase 區塊儲存立方體的計算命令檔時,需要學習一些語法規則。命令通常會以分號終止。某些成員名稱必須使用引號。Essbase 可協助您驗證語法。

整體語法規則

Essbase 區塊儲存立方體包含一組彈性的命令,可供您用來控制立方體的計算方式。您可以從命令和公式建構計算命令檔。

當您建立計算命令檔時,必須套用下列規則:

  • 以分號 (;) 結束每個公式或計算命令檔命令。舉例而言:

    範例 1

    CALC DIM(Product, Measures);

    範例 2

    DATACOPY Plan TO Revised_Plan;

    範例 3

    "Market Share" = Sales % Sales -> Market;

    範例 4

    IF (Sales <> #MISSING)
       Commission = Sales * .9;
       ELSE
          Commission = #MISSING;
    ENDIF;

    您不需要以分號結束下列條件控制流程命令

    • IF
    • ENDIF
    • ELSE
    • ELSIF
    • FIX
    • 字首
    • EXCLUDE
    • 不包括
    • LOOP
    • 結束迴圈

    附註:

    雖然並非必要,Oracle 建議以分號結束公式中的每個 ENDIF 陳述式。

  • 如果成員名稱符合下列任一條件,請以雙引號 (" ") 括住成員名稱:

    • 包含空格。

      例如,在下列公式中,「期初存貨」與「期末存貨」會以雙引號括住:

      "Opening Inventory" = "Ending Inventory" - Sales + Additions;
    • 與運算子、函數名稱或關鍵字相同。

      請參閱計算命令檔、報表命令檔、公式、篩選以及替代和環境變數值中的命名慣例

    • 包含任何非英數字元,例如連字號 (-)、星號 (*) 或斜線 (/)。

    • 僅包含數字或以數字為開頭。

      例如:"100" 或 "10Prod"

    • 開頭為 & 符號。前面的 & 符號已保留給替代變數使用。如果成員名稱以 & 開頭,則以引號括住名稱。

      附註:

      請勿在計算指令檔中以引號括住替代變數。

    • 包含一個點 (.)。

      例如:1999。一月 或 .100

  • 如果您使用 IF 陳述式或相互相依公式,請將公式括在括號中,以將其與指定成員相關聯。

    例如,下列公式與資料庫大綱中的「佣金」成員相關聯:

    Commission
    (IF(Sales < 100)
       Commission = 0;
    ENDIF;)
  • 在公式中,以 ENDIF 陳述式結束每個 IF 陳述式

    例如,上一個公式包含簡單的 IF...ENDIF 陳述式。

  • 如果您使用的 IF 陳述式位於另一個 IF 陳述式中,則以 ENDIF 陳述式結束每個 IF。

    舉例而言:

    "Opening Inventory"
    (IF (@ISMBR(Budget))
       IF (@ISMBR(Jan))
          "Opening Inventory" = Jan;
       ELSE 
          "Opening Inventory" = @PRIOR("Ending Inventory");
       ENDIF;
    ENDIF;)
  • 您不需要結束含有 ENDIF 敘述句的 ELSEELSEIF 敘述句。

    舉例而言:

    Marketing
    (IF (@ISMBR(@DESCENDANTS(West)) OR @ISMBR(@DESCENDANTS(East)))
       Marketing = Marketing * 1.5;
    ELSEIF(@ISMBR(@DESCENDANTS(South)))
       Marketing = Marketing * .9;
    ELSE 
       Marketing = Marketing * 1.1;
    ENDIF;)

    附註:

    如果您在公式中使用 ELSE IF (具有空格) 而非 ELSEIF (一個字),則必須為 IF 陳述式提供 ENDIF。

  • 使用 ENDFIX 敘述句結束每個 FIX 敘述句。

    舉例而言:

    FIX(Budget,@DESCENDANTS(East))
       CALC DIM(Year, Measures, Product);
    ENDFIX
  • 以 ENDEXCLUDE 敘述句結束每個 EXCLUDE 敘述句。

當您使用 Essbase Web 介面撰寫計算命令檔時,可以使用語法檢查器來驗證計算命令檔。

在計算指令碼中使用備註

您可以包含註解以註釋計算指令碼。計算命令檔執行時會忽略註解。

若要包括註解,請使用 /* 開始註解,然後以 */ 結束註解。舉例而言:

/* This calculation script comment
   spans two lines. */

核對語法

Essbase Web 介面中的計算指令碼編輯器包含語法驗證,可在計算指令碼中標記語法錯誤 (例如輸入錯誤的函數名稱)。

如果找不到語法錯誤, Essbase 指示語法檢查成功。

如果發現語法錯誤, Essbase 會指出語法檢查失敗,並一次顯示一個錯誤,指出發生錯誤的位置。

附註:

語法檢查器無法判斷語意錯誤,當計算命令檔無法如預期般運作時就會發生此錯誤。若要尋找語意錯誤,請執行計算並檢查結果,以確保它們符合您的預期。