部署可配置计算(插入点)规则后诊断性能问题

可配置计算可用于实施现成可用的合并过程未提供的用例。

  • 多货币应用程序:可以编写可配置计算,用于处理本地货币(未转换的实体级别数据)、已转换的数据(转换的实体级别数据)和合并的数据。
  • 单货币应用程序:可以编写可配置计算,用于处理本地货币(未转换的实体级别数据)和合并的数据。

这些计算在运行合并过程时由 Financial Consolidation and Close 调用,不能作为独立的计算调用。编写不当的可配置计算可能会严重影响合并过程的运行时性能。Financial Consolidation and Close建议卡显示有关在合并期间可能会导致性能下降的规则的警告。这些警告指示了在编写可配置计算脚本时应遵循的最佳做法,这些做法可能会提高合并性能。有关详细信息,请参阅《管理 Financial Consolidation and Close》中的“解决计算脚本验证警告”。

此外,可使用以下建议提高可配置计算的性能。

  • 以按需规则方式运行本地货币可配置计算
  • 禁用 CALC DIM 逻辑
  • 设置 HYBRIDBSOINCALCSCRIPT
  • 以 BOTTOMUP 方式运行可配置计算
  • 使用 BLOCK 模式计算
  • 考虑在表达式右侧使用成员总数

以按需规则方式运行本地货币可配置计算

为本地货币编写的可配置计算用于货币维中的实体货币成员和合并维中的实体输入成员。进行一些更改后,本地货币可配置计算可以编写为按需规则 (On Demand Rule, ODR)。这种方法的优势包括:

  • 缩短合并时间。

    假设用户在实体货币和实体输入级别将上一期间(已锁定)值复制到当前期间需要五分钟。此任务只需进行一次,因为上一期间值不太可能发生变化。如果在本地货币可配置计算中包含此计算,则会在每次调用合并时都会运行此计算,这会导致合并时间增加。以 ODR 方式移动此类计算,可以在需要时调用它们,从而节省时间。在这种情况下,通过避免复制上一期间数据,每个期间可节省五分钟的合并时间。

  • 有助于调试本地货币可配置计算。

    假定这样一个用例:您需要在每次合并期间在本地货币和实体输入级别执行计算逻辑。由于此类规则必须是本地货币可配置计算的一部分,因此,每次尝试调试与规则相关的性能问题时,您都需要运行合并,此过程很耗时。为了节省时间,您可以按 ODR 方式移动本地货币可配置计算,对其进行调试和微调,然后将其作为本地货币可配置计算移回。

  • 提供简便的运行时访问和统计信息。

    可以从 Financial Consolidation and Close 规则卡或直接从 Calculation Manager 调用 ODR。从 Calculation Manager 运行的 ODR 将生成统计信息,这些信息有助于识别处理时间用在何处以及对其运行计算的成员。收集运行时统计信息的步骤如下:

    1. 访问 Calculation Manager 并启动 ODR。
      在 Calculation Manager 中启动按需规则

    2. 选择运行时提示。
    3. 在“启动状态”中单击确定

      此时将显示日志消息选项卡。此选项卡显示运行时统计信息。

将可配置计算移至 ODR

为本地货币编写可配置计算时,无法在 FIX 中以锚点方式或在表达式左侧使用方案、年份、期间和实体维中的成员;只能使用货币维和合并维中的成员。由于在合并过程中会调用本地货币规则,因此考虑以运行时提示 (Run Time Prompt, RTP) 提供给合并过程的方案、年份、期间和实体维的成员。

不能在 ODR 中使用方案、年份、期间、实体、货币和合并维成员。以 RTP 方式提供相关维成员来启动 ODR 运行。

禁用 CALC DIM 逻辑

当您为插入点创建可配置的计算脚本时,Financial Consolidation and Close 自动在父级生成数据,以便这些父成员在下一个插入点中可用。Financial Consolidation and Close 添加 CALC DIM 逻辑来汇总您填充的数据。根据层次的复杂性,处理这个添加的 CALC DIM 逻辑非常耗时。如果您不需要在后面的插入点中引用重新计算的父成员,则可以通过禁用 Financial Consolidation and Close为插入点添加的 CALC DIM 逻辑来加快整体合并过程。

Note:

禁用 CALC DIM 逻辑将影响合并脚本生成。在禁用 CALC DIM 逻辑后仔细检查合并结果。

为了防止 Financial Consolidation and Close 在多货币应用程序中生成不必要的 CALC DIM 逻辑,请使用以下列表中定义相应的替代变量,并将其设置为 True

  • CONFCALC_FCCS10_DISABLECALCDIM
  • CONFCALC_FCCS20_DISABLECALCDIM
  • CONFCALC_FCCS25_DISABLECALCDIM
  • CONFCALC_FCCS30_DISABLECALCDIM
  • CONFCALC_FCCS40_DISABLECALCDIM
  • CONFCALC_FCCS50_DISABLECALCDIM
  • CONFCALC_FCCS60_DISABLECALCDIM
  • CONFCALC_FCCS70_DISABLECALCDIM

例如,假定您已在 FCCS 10 和 FCCS 20 可配置计算规则中编写了自定义逻辑。如果要为 FCCS_20 而非 FCCS_10 禁用 CALC DIM 逻辑,您应定义名为 CONFCALC_FCCS20_DISABLECALCDIM 的替代变量,并且将其设置为 True

为了防止 Financial Consolidation and Close 在单货币应用程序中生成不必要的 CALC DIM 逻辑,请使用以下列表中定义相应的替代变量,并将其设置为 True

  • CONFCALC_FCCS110_DISABLECALCDIM
  • CONFCALC_FCCS120_DISABLECALCDIM
  • CONFCALC_FCCS130_DISABLECALCDIM
  • CONFCALC_FCCS140_DISABLECALCDIM
  • CONFCALC_FCCS150_DISABLECALCDIM

SET HYBRIDBSOINCALCSCRIPT

SET HYBRIDBSOINCALCSCRIPT 命令控制计算脚本中的特定块是否以混合模式执行。

考虑在本地货币的“期初余额结转之后”规则中使用以下可配置计算脚本:

FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX
在启动合并时,对于可配置计算,Financial Consolidation and Close 通过使用 SET HYBRIDBSOINCALCSCRIPT FULL;SET HYBRIDBSOINCALCSCRIPT NONE; 命令(在 Calculation Manager 中不可见)封装规则来启用混合模式。添加这些命令不是为了 ODR。
SET HYBRIDBSOINCALCSCRIPT FULL;
FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX

SET HYBRIDBSOINCALCSCRIPT NONE;

为了确保在合并期间为可配置计算开启混合模式不会影响性能,请关闭混合模式(请参阅以下示例),然后运行合并。

SET HYBRIDBSOINCALCSCRIPT FULL;

SET HYBRIDBSOINCALCSCRIPT NONE;
FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX

SET HYBRIDBSOINCALCSCRIPT NONE;

以 BOTTOMUP 方式运行可配置计算

以 TOPDOWN 方式运行可配置计算可能会降低它们的速度。因此,调用这些计算的合并过程也会变慢。为了避免出现此问题,请务必以 BOTTOMUP 方式运行可配置计算。有关详细信息,请参阅《Essbase Technical Reference》中的“@CALCMODE

切换到 BOTTOMUP 计算时,确保目标块已存在,并且数据计算正确。

使用 BLOCK 模式计算

由于 CELL 模式计算可能会降低可配置计算的速度,请务必在 BLOCK 模式下运行它们。有关详细信息,请参阅《Essbase Technical Reference》中的“@CALCMODE

切换到 BLOCK 模式计算时,应仔细考虑块内的数据相关性,以确保生成的数据准确无误。

考虑在表达式右侧使用成员数

有时,您可能需要将聚合数据拉取到无成员,如以下示例中所示:

"Target_Account_Stored" -> "Mvmt_None" = "FCCS_Mvmts_Subtotal"
 -> "Source_Account_DynamicCalc" -> "Total Custom1" -> "Total Custom2";

此示例尝试将右侧动态计算的结果存储到已存储的密集成员中。默认情况下,Financial Consolidation and CloseSET HYBRIDBSOINCALCSCRIPT FULL;SET HYBRIDBSOINCALCSCRIPT NONE; 命令中封装此可配置计算。但是,即使在封装后,此计算的性能仍可能不佳,因为它是从顶级成员读取数据。要提高性能,您可以重新编写此类计算以循环访问所需维的 0 级成员,而不是从顶级成员读取数据,如以下示例中所示:

SET HYBRIDBSOINCALCSCRIPT NONE; /*Turn off hybrid mode */
FIX(@RELATIVE( "Total Custom1", 0 ), @RELATIVE( "Total Custom2", 0 ), <other dimension members of FIX> )
       "FCCS_Mvmts_Subtotal" ( @CALCMODE( BOTTOMUP );
             "Target_Account_Stored" -> "Mvmt_None"  =  "Target_Account_Stored"  -> "Mvmt_None" + "Source_Account_DynamicCalc";
             )
ENDFIX