Essbase 計算指令碼是可供您在 Financial Consolidation and Close 中撰寫自訂業務邏輯的語言。本節提供一些基本 Essbase 建構,以及適用於 Financial Consolidation and Close 的限制。如需關於 Essbase 計算指令碼的詳細資料,請參閱管理員適用的 Essbase Cloud 入門。
一般語法
Sales = Sales * 1.50;
"Cash Ratio" = "Cash"/"Current Liabilities";
->
來指定多個維度的交集"Sales"->"Changes In Net Income"->"Product1";
備註
註解以 /*
開始,以 */
結束。
支援單行或多行備註
您可以使用工具列圖示來設定或移除備註區塊。
FIX/ENDFIX
FIX/ENDFIX 是任何計算指令碼的基本建置組塊之一。若要執行任何計算,您必須定義 FIX/ENDFIX 區段,然後將實際的商業計算放置其中。
範例:假設「產品」是您的自訂維度,而且您想要計算已售出的電視數目。您可以使用下列語法:
FIX("Televisions")
"Units_Sold" = "LED_TVs" + "UHD_TVs";
ENDFIX
實際商業計算為:
"Units_Sold = "LED_TVs" + "UHD_TVs";
,會計算已售出的電視數目。
註:
您必須在每個計算陳述式的結尾放置分號,但不適用於 FIX 或 ENDFIX。FIX/ENDFIX 區段限制參與計算的各個維度的成員。在此範例中,只有「電視」正在參與計算。
您也可以定義巢狀的 FIX,如下所示:
上面的計算也可以寫成如下所示:
例如,@List 是 Essbase 函數。Essbase 提供許多函數。不過,Financial Consolidation and Close 並不支援所有 Essbase 函數。如需支援函數的清單,請參閱〈Essbase 函數清單〉一節。
Financial Consolidation and Close 維度上的 FIX
依據啟用的應用程式功能而定,Financial Consolidation and Close 應用程式可包含 13 個維度。在這 13 個維度以外,下列維度不允許 FIX,因為當使用者叫用整合程序時,系統會自動在這些維度上套用 FIX。
案例
年度
期間
檢視
實體
例如,假設您具有下列陳述式:
系統將部署失敗,並且會在「工作」主控台記錄錯誤訊息,提供相應資訊。
但是,這並不代表您不能在指令碼中使用這些維度。一般來說,計算將具有類似下面的語法:
請注意,在 FIX 與「左側」中,您無法使用「案例」、「年度」、「期間」、「實體」和「檢視」維度中的任何成員。但是方程式的 "Right hand side" (右側) 沒有這樣的限制。
允許下列語法:
對於其餘八個維度,如果您沒有在特定維度上進行 FIX,則系統將採用該維度的所有成員。例如,假設您具有下列陳述式:
在此範例中,除了科目之外,所有其餘維度都有一個 FIX。在這種情況下,Essbase 將考慮使用在 FIX/ENDFIX 中進行計算之科目維度中的所有成員。
限制的 Financial Consolidation and Close 成員
每個 Financial Consolidation and Close 內都有某些系統成員在計算指令碼中被限制使用或計算。如果在計算中使用受限制的成員,則系統將會驗證失敗或部署失敗,並在「工作」主控台記錄錯誤訊息。
請記住,如果沒有為該維度指定成員,則系統會採用維度內的「所有」成員。但是,由於無法加入受限制的成員作為程序的一部分,因此必須在 FIX 維度陳述式或表示式的左側明確排除這些受限制的成員。
下表是來自這些維度的受限制 Financial Consolidation and Close 成員完整清單。請注意,對於幣別與整合維度,它們將根據使用的插入規則進行限制。請注意,每個內建插入規則在「註解」區段中都包含有關該規則可包含哪些幣別與整合維度成員的資訊。
表格 19-5 受限制的維度成員
維度 | 成員 | 表示式 左側 | 表示式 右側 |
---|---|---|---|
案例 | 所有成員 | 否 | 是 |
年度 | 所有成員 | 否 | 是 |
期間 | 所有成員 | 否 | 是 |
檢視 | 所有成員 | 否 | 是 |
實體 | 所有成員 | 否 | 是 |
科目 | FCCS_CSTATUS | 否 | 是 |
FCCS_CSTATUS FILTER | 否 | 是 | |
外幣匯率 - 期末 | 否 | 是 | |
外幣匯率 - 平均 | 否 | 是 | |
Average Rate | 否 | 是 | |
Ending Rate | 否 | 是 | |
SrcAverageRate | 否 | 是 | |
TgtAverageRate | 否 | 是 | |
SrcEndingRate | 否 | 是 | |
TgtEndingRate | 否 | 是 | |
FCCS_Balance | 否 | 是 | |
FCCS_CTA | 否 | 是 | |
FCCS_CICTA | 否 | 是 | |
FCCS_Percent Control | 否 | 是 | |
FCCS_Current Ratio | 否 | 是 | |
FCCS_Quick Ratio | 否 | 是 | |
FCCS_Cash Ratio | 否 | 是 | |
FCCS_Inventory Turnover | 否 | 是 | |
FCCS_Asset Turnover | 否 | 是 | |
FCCS_Days Sales In Receivables | 否 | 是 | |
FCCS_Days Sales In Inventory | 否 | 是 | |
FCCS_Gross Profit Margin | 否 | 是 | |
FCCS_Return on Sales | 否 | 是 | |
FCCS_Return on Equity | 否 | 是 | |
FCCS_Debt to Equity Ratio | 否 | 是 | |
FCCS_Debt Ratio | 否 | 是 | |
資料來源 | FCCS_System Types | 否 | 是 |
FCCS_Rate Override | 否 | 是 | |
FCCS_Account Override | 否 | 是 | |
FCCS_PCON | 否 | 是 | |
FCCS_Driver Source | 否 | 是 | |
變動 | FCCS_Opening Balance | 否 | 是 |
FCCS_OpeningBalance_Cash | 否 | 是 | |
FCCS_FX_Total_NonCash | 否 | 是 | |
FCCS_ClosingBalanceCash | 否 | 是 |
在所有維度成員上 (除了受限制成員以外) 進行 FIX
這是一個常見的使用情況,您需要在維度的所有層級 0 成員上進行 FIX,並且該維度可能具有受限制的成員。此範例顯示如何在所有層級 0 成員 (除了該維度的受限制成員以外) 上進行最佳 FIX。
例如,科目維度的受限制成員數目最多。
以下是可用於在受限制成員以外之所有層級 0 科目成員上進行 FIX 的計算指令碼片段:
@REMOVE( @LEVMBRS( "Account", 0 ), @LIST( @RELATIVE( "FCCS_System Account", 0 ),@RELATIVE( "FCCS_Drivers", 0 ),@RELATIVE( "FCCS_Ratios", 0 ),@RELATIVE( "Exchange Rates", 0 ) ) )
在稀疏和密集維度上進行 FIX
在稀疏維度上完成 FIX 更有效。在這種情況下,FIX 僅針對在 FIX 中定義的稀疏維度成員的組合建立 Essbase 提取區塊,並跳過其餘部分。
這些稀疏組合作為 Essbase 的索引,以搜尋符合索引的資料區塊,並提取這些資料區塊以進行計算。因此,不會提取所有區塊以供系統執行。
在密集維度上使用 FIX 時,密集成員將顯示在 Essbase 中的每個資料區塊中。因此,如果使用不當,會影響效能。請注意,當 FIX 處於密集維度時,Essbase 將不受區塊數目的限制,提取所有資料區塊,並且僅限於每個區塊內的一部分。因此,可能需要多次傳遞至資料庫才能傳回資訊。
例如,您可以使用以下陳述式,從科目維度中參照 "Sales" 與 "PostSales":
當系統在 "Sales" 上處理第一個 FIX 時,Essbase 會提取科目維度的所有資料區塊,但只處理一個 "Sales" 科目。
稍後在 "PostSales" 的 FIX 陳述式中,Essbase 會再次提取科目維度的所有資料區塊,但僅在一個 "PostSales" 科目上運作。在此情況下,對這兩個科目進行兩次資料庫傳遞。
為了避免效能問題,您可以避免在科目維度上使用 FIX,但對於密集維度使用 IF...THEN。
在沒有使用 FIX 陳述式的範例中,您只需要傳遞到 Essbase 資料庫一次。
建議在稀疏維度上使用 FIX,並針對密集維度使用 IF..THEN,以幫助計算效能。
成員區塊
成員區塊也稱為計算區塊。有時您會看見用於成員區塊的術語「錨點」。成員區塊的語法如下所示:
以下是成員區塊陳述式的範例:
在此範例中,「我的期初餘額總計」稱為計算區塊成員或錨點。此成員應該盡可能是密集維度的成員。
在上述計算中,我們只限於成員「我的外匯開盤」,而且是在 FIX 陳述式中指定的成員上執行計算。
請注意,使用 IF 陳述式時,您將需要一個成員區塊。您無法在成員區塊外部撰寫 IF 陳述式。