创建和验证使用 Essbase 计算脚本的可配置计算或按需规则时,作为验证过程的一部分,Financial Consolidation and Close 会对运行规则时可能导致性能下降的问题发出警告。要查看这些警告,请在 Calculation Manager 中选择错误和警告选项卡,然后单击绿色按钮以运行脚本诊断。
在下面的屏幕截图中,绿色突出显示的单元格是来自 Financial Consolidation and Close 的警告。显示的其他警告来自 Calculation Manager。
注:
Financial Consolidation and Close 规则验证警告也显示在“建议”模块中。请参阅“查看应用程序建议”。
警告消息根据脚本的行号进行排序和显示。
要在 Calculation Manager 中查看规则验证警告:
以下部分提供了有关如何解决规则验证警告的详细信息。
针对使用锚点的 Calc Manager 脚本验证
要在 Calc Manager 脚本中正确使用锚点,请遵循以下准则:
对于非 DSO 应用程序
请注意,对于可配置计算(插入点),不能从方案、年份、期间、实体或视图中选择成员作为锚点。
对于按需规则 (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
在此脚本示例中,规则验证过程将生成以下警告:
第 2 行:使用移动成员 FCCS_Mvmts_NetIncome 作为锚点,而不是锚点成员 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
在此脚本示例中,规则验证过程将生成以下警告:
第 2 行:使用帐户成员 IC_PROFIT_ACC 作为锚点,而不是锚点成员 FCCS_Managed Data。
针对 @CALCMODE (BottomUp) 的 Calc Manager 脚本验证
@CALCMODE(BOTTOMUP) 与 @CALCMODE(TOPDOWN)
相比于 TOPDOWN,Financial Consolidation and Close 建议使用 BOTTOMUP,以通过可配置计算(插入点)或按需规则 (ODR) 实现更快的计算。
运行 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
在此脚本示例中,规则验证过程将生成以下警告:
第 2 行:对成员块 FCCS_Income_Statement 使用 @CalcMode (BOTTOMUP)。
有关详细信息,请参阅以下主题:https://docs.oracle.com/cd/E57185_01/ESBTR/calcmode_func.html
针对混合 BSO 的 Calc Manager 脚本验证
对于混合 Financial Consolidation and Close 应用程序,建议在适用的情况下使用 SET HYBRIDBSOINCALCSCRIPT NONE/FULL,以获得最佳性能结果。
默认情况下,可配置计算(插入规则)将 HYBRIDBSOINCALCSCRIPT 设置为 FULL,而对于按需规则,将 HYBRIDBSOINCALCSCRIPT 设置为 NONE。
规则验证过程会检查脚本是否包含 CustomTop 维成员(此类成员具有动态计算存储类型)。
以下是按需规则的示例。每行都用 # 表示,# 是行号。
#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
在此脚本示例中,规则验证过程将生成以下警告:
第 3 行:使用 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 on a dense member、@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
在此脚本示例中,规则验证过程将生成以下警告:
第 2 行:对成员块 FCCS_Income_Statement 使用 @CalcMode (BLOCK)。