智能计算和数据块状态

启用 Intelligent Calculation(智能计算)后, Essbase 将检查数据库中块的更新状态,并仅计算“脏”块及其相关父代。禁用后, Essbase 将计算计算范围中的所有数据块,而不管它们是标记为干净还是脏。

标记为“清除”的块

Essbase 在以下类型的计算中将数据块标记为干净:

  • 数据库的完整计算 (CALC ALL)(默认计算)。

  • 计算一个 CALC DIM 语句中的所有维的计算脚本。

    例如,以下计算脚本将计算 Sample Basic 数据库中的所有成员:

    CALC DIM(Measures, Product, Market, Year, Scenario);

    将此计算脚本与使用两个 CALC DIM 语句计算所有成员的计算脚本进行比较:

    CALC DIM(Measures, Product);
    CALC DIM(Market, Year, Scenario);

使用两个 CALC DIM 语句会导致 Essbase 至少两次通过数据库进行计算。在此计算中,默认情况下, Essbase 不会将数据块标记为“干净”。由于智能计算取决于准确的干净和脏状态,因此您必须仔细管理这些标记。

除非您在计算脚本中使用 SET CLEARUPDATESTATUS 命令,否则 Essbase 仅在上述情况下才会将计算的数据块标记为干净。请参见 The SET CLEARUPDATESTATUS Command

标记为“脏”的块

在以下情况下, Essbase 会将数据块标记为脏数据块:

  • 仅当 SET CLEARUPDATESTATUS AFTER 不是计算脚本中的部分计算语句时,才计算数据库部分计算的数据块

  • 将数据加载到数据块

  • 重建数据库(例如向密集维添加成员)

  • 将数据复制到数据块;例如,使用 DATACOPY

清洁/脏状态维护

要在计算数据库子集或执行多次计算通过时使用智能计算,请仔细考虑 Essbase 如何将数据块标记为干净的含义,以确保 Essbase 尽可能高效地重新计算数据库。

例如,计算数据库的某个子集时,默认情况下,新计算的数据块不会标记为“干净”。通过在计算脚本中使用 SET CLEARUPDATESTATUS AFTER 命令,可以确保新计算的块标记为清除。在创建计算脚本之前,请参见 The SET CLEARUPDATESTATUS Command