瞭解基本計算指令碼語法
設計 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;) -
例如,上一個公式包含簡單的 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 敘述句的 ELSE 或 ELSEIF 敘述句。
舉例而言:
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 會指出語法檢查失敗,並一次顯示一個錯誤,指出發生錯誤的位置。
附註:
語法檢查器無法判斷語意錯誤,當計算命令檔無法如預期般運作時就會發生此錯誤。若要尋找語意錯誤,請執行計算並檢查結果,以確保它們符合您的預期。