解決計算指令碼驗證警告

當您在驗證程序中建立和驗證使用 Essbase 計算指令碼的「可設定的計算」或「隨需規則」時,Financial Consolidation and Close 會提供有關執行規則時可能導致效能降低之問題的警告。若要查看這些警告,請選取 Calculation Manager 中的錯誤與警告頁籤,然後按一下綠色按鈕以執行指令碼診斷。

在下列螢幕擷取畫面中,以綠色醒目提示的儲存格是來自 Financial Consolidation and Close 的警告。其他顯示的警告則來自 Calculation Manager。


Calc Manager 中的規則驗證

註:

Financial Consolidation and Close 規則驗證警告也會顯示在建議模組中。請參閱檢視應用程式建議

系統會根據指令碼的行號排序並顯示警告訊息。

若要檢視 Calculation Manager 中的規則驗證警告,請執行下列動作:

  1. 開啟 Calculation Manager,然後選取錯誤與警告頁籤。
  2. 按一下執行圖示以顯示警告。

以下各節提供如何解決規則驗證警告的詳細資料。

使用錨點的 Calc Manager 指令碼驗證

請遵循下列準則,以在 Calc Manager 指令碼中正確使用錨點:

對於非 DSO 應用程式

  • 如果您的 FIX 區塊只有一個「變動」成員,則 Financial Consolidation and Close 會建議您使用該「變動」成員作為錨點。
  • 如果 FIX 區塊中有多個「變動」成員,您就不能選擇「變動」作為錨點。在這種情況下,您可以從其他「稀疏」維度中選擇一個成員作為錨點。
    • 請注意,對於可設定的計算 (插入點),您無法從「案例」、「年度」、「期間」、「實體」或「檢視」中選擇成員作為錨點。

    • 若為隨需規則 (ODR),您無法從「案例」、「年度」、「期間」、「實體」、「整合」或「幣別」中選擇成員作為錨點。

  • 避免使用來自「密集」維度的成員作為錨點。如果是非 DSO 應用程式,「科目」是「密集」維度。若為「密集」成員區塊,CALCMODE(BOTTOMUP) 將不具有任何效能優勢。

對於 DSO 應用程式

  • 在 DSO 應用程式中,「變動」是「密集」維度。如果您要從非 DSO 移動到 DSO 應用程式,則應確定變動維度中的成員不是您的錨點。您可以從科目維度中選擇一個成員作為成員區塊的錨點,因為科目在 DSO 應用程式中是「稀疏」維度。

  • 如果您無法選擇「科目」成員作為錨點,請從任何其他「稀疏」維度中選擇一個成員作為錨點。

    • 請注意,對於可設定的計算 (插入點),您無法從「案例」、「年度」、「期間」、「實體」或「檢視」(密集) 中選擇成員作為錨點。

    • 若為隨需規則 (ODR),您無法從「案例」、「年度」、「期間」、「實體」、「整合」或「幣別」中選擇成員作為錨點。

  • 避免使用來自「密集」維度的成員作為錨點。在 DSO 應用程式中,變動和期間是「密集」維度。若為「密集」成員區塊,CALCMODE(BOTTOMUP) 將不具有任何效能優勢。

以下是非 DSO 應用程式的可設定計算 (插入規則) 範例。每一行以 # 表示,即行號。

#1 FIX ("FCCS_Periodic", "FCCS_Journal Input", "FCCS_Managed Data", "IFRS_IN ", "Entity Currency", "FCCS_Mvmts_NetIncome", @relative("Total Categories", 0), @relative("Total Area", 0), @LEVMBRS("Intercompany", 0) @relative("Total Custom", 0)) 
#2        "FCCS_Entity Input" (
#3           IF (@ISMBR("Actual_Red")) 
#4                IF (@ISUDA("Entity", "B10") AND ("FCCS_Mvmts_NetIncome" <> #Missing)) 
#5                    ENDIF
#6            ENDIF
#7        ) 
#8 ENDFIX

在此指令碼範例中,規則驗證程序會產生下列警告:

Line 2:Use Movement member FCCS_Mvmts_NetIncome as an anchor instead of Anchor member FCCS_Entity Input.

以下是 DSO 應用程式的可設定計算 (插入規則) 範例。每一行以 # 表示,即行號。

     #1   FIX("FCCS_Periodic","FCCS_No Intercompany","No operating Expense","Product1    ","CORP_IN","IC_PROFIT_ACC ")
        #2      "FCCS_Managed Data"(
        #3      @CALCMODE(BOTTOMUP);
        #4          IF (@ISMBR("FY21"))
        #5              "FCCS_OpeningBalanceAdjustment"=10;
        #6         ENDIF
        #7       )
        #8     ENDFIX

在此指令碼範例中,規則驗證程序會產生下列警告:

Line 2: Use Account member IC_PROFIT_ACC as an anchor instead of Anchor member FCCS_Managed Data.

@CALCMODE (BottomUp) 的 Calc Manager 指令碼驗證

@CALCMODE(BOTTOMUP) 與 @CALCMODE(TOPDOWN)

使用可設定的計算 (插入點) 或隨需規則 (ODR) 時,Financial Consolidation and Close 建議使用 BOTTOMUP 而不使用 TOPDOWN,因為計算速度較快。

使用 BOTTOMUP 期間 (這是預設的計算方法),Essbase 會先決定必須計算哪些現有資料區塊,再使用「稀疏」成員區塊計算資料。然後 Essbase 在整個資料庫計算過程中只會計算需要計算的區塊。

範例:A = B + C

只有 B 和 C 存在於資料庫時才會計算 A。在實際計算開始之前,A 對 B 和 C 的相依性是已知的。

使用 TOPDOWN 期間,Essbase 使用成員區塊中的「稀疏」成員計算所有潛在資料區塊上的公式。

範例:A = B -> D + C -> D

若要計算公式,Essbase 必須檢查 A 的每個組合以查看 B -> D 或 C -> D 是否存在。

Essbase 使用 BOTTOMUP 作為預設機制來計算對「稀疏」成員指派的公式,除非公式的本質複雜,在這種情況下將執行 TOPDOWN 計算。

複雜表示式是符合以下準則的表示式:

  • 包含跨維度運算子 [ -> ]

  • 使用一或多個範圍函數,例如,@AVGRANGE@MAXRANGE@MINRANGE@SUMRANGE

  • 使用關係或財務函數,例如,@ANCESTVAL@NEXT@PARENTVAL@SHIFT@ACCUM@GROWTH

在這種情況下,Essbase 會提供 @CALCMODE(BOTTOMUP) 函數來強制執行稀疏公式計算以執行 BOTTOMUP。

以下是可設定的計算 (插入規則) 範例。每一行以 # 表示,即行號。

#1   FIX ("FCCS_Periodic", "FCCS_Entity Input", "Entity Currency", "FCCS_ClosingBalance_Input","FCCS_Balance Sheet","FCCS_Total Data Source") 
#2   "FCCS_Income_Statement"(
#3   "FCCS_Movements"=@CURRMBR("Entity")->"FCCS_Contribution" -> "FCCS_Movements";
#4   )
#5   ENDFIX 

在此指令碼範例中,規則驗證程序會產生下列警告:

Line 2: Use @CalcMode (BOTTOMUP) for member block FCCS_Income_Statement.

如需詳細資訊,請參閱此主題:https://docs.oracle.com/cd/E57185_01/ESBTR/calcmode_func.html

混合 BSO 的 Calc Manager 指令碼驗證

對於混合 Financial Consolidation and Close 應用程式,建議在適用時將 HYBRIDBSOINCALCSCRIPT 設定為 NONE/FULL 以獲得最佳效能結果。

依預設,可設定的計算 (插入規則) 會將 HYBRIDBSOINCALCSCRIPT 設定為 FULL,對於隨需規則,會將 HYBRIDBSOINCALCSCRIPT 設定為 NONE。

規則驗證程序會檢查指令碼是否包含具有「動態計算」儲存類型的 CustomTop 維度成員。

  • 如果表示式有 0 或 1 個 CustomTop 成員,會顯示將 HYBRIDBSOINCALCSCRIPT 設定為 NONE 的警告 (如果其設定為 FULL)。
  • 如果表示式有兩個或更多個 CustomTop 成員,會顯示將 HYBRIDBSOINCALCSCRIPT 設定為 FULL 的警告 (如果其設定為 NONE)。

以下是隨需規則範例。每一行以 # 表示,即行號。

     #1 FIX ("FCCS_Periodic", "FCCS_No Intercompany", "No Product", "FCCS_Mvmts_NetIncome", @RELATIVE("AllDepts", 0), "No Department") 
        #2    FIX (@RELATIVE("TotalHFM", 0)) 
        #3        "StkCmpRev_CE" = -("555011_CE"->"FCCS_YTD"->"FCCS_Intercompany Top") - ("555012_CE"->"FCCS_YTD"->"FCC_Intercompany Top");
        #4    ENDFIX 
#5 ENDFIX

在此指令碼範例中,規則驗證程序會產生下列警告:

Line 3: Disable Hybrid calculation for this block with SET HYBRIDBSOINCALCSCRIPT NONE.

如需詳細資訊,請參閱此主題:https://docs.oracle.com/en/cloud/paas/analytics-cloud/tress/hybridbsoincalcscript.html

@CALCMODE (BLOCK) 的 Calc Manager 指令碼驗證

針對此特定使用案例,Financial Consolidation and Close 建議在適用時新增 @CalcMode (BLOCK) 以改善效能。

如需 @CalcMode (BLOCK) 的詳細資訊,請參閱此主題:https://docs.oracle.com/cd/E57185_01/ESBTR/calcmode_func.html

為了識別 DSO 和非 DSO 應用程式的錨點區塊內是否需要 @CALCMODE(BLOCK),規則驗證程序會檢查下列條件:

  • 錨點區塊中的表示式是否為複雜表示式

  • 表示式是否包含特定函數,例如,密集成員上的 @ANCEST@CURRMBR@ISMBR,或是 @MDANCESTVAL@MDPARENTVAL@MDSHIFT@NEXT@PARENT@PARENTVAL@PRIOR@SANCESTVAL@SPARENTVAL@SHIFT

如果符合這些條件,驗證程序會發出含有行號的警告。

以下是可設定的計算 (插入規則) 範例。每一行以 # 表示,即行號。

#1   FIX ("FCCS_Periodic", "FCCS_Entity Input", "Entity Currency", "FCCS_ClosingBalance_Input","FCCS_Balance Sheet","FCCS_Total Data Source") 
#2   "FCCS_Income_Statement"(
#3   "FCCS_Movements"=@CURRMBR("Entity")->"FCCS_Contribution" -> "FCCS_Movements";
#4   )
#5   ENDFIX 

在此指令碼範例中,規則驗證程序會產生下列警告:

Line 2: Use @CalcMode (BLOCK) for member block FCCS_Income_Statement.