计算通过

如果可能, Essbase 会计算一次块存储数据库。在某些情况下, Essbase 必须进行多次传递。

通常, Essbase 在一个计算直通中计算 BSO 多维数据集,并且每个必需的数据块仅读取到内存一次,然后计算并保存。但是,在某些情况下, Essbase 可能需要执行多次计算传递。在后续传递时, Essbase 会将数据块恢复到内存中,对其执行进一步的计算,并再次进行保存。

执行数据库 (CALC ALL) 的默认完整计算时, Essbase 会尝试一次计算数据库。如果您有标记为帐户或时间的维,则 Essbase 可能必须通过数据库进行多次计算。

下表显示了如果您具有标记为时间或帐户的维,并且帐户维上至少有一个公式,则 Essbase 执行的计算传递次数:

表 19-11:帐户和时间维的计算通过

标记为账户的维 标记为时间的维 计算通过 在每次计算通过期间,Essbase 将基于以下各项进行计算:

密集或稀疏

1

所有维

密集

密集

1

所有维

密集

稀疏

2

传递 1:帐户和时间维

通过 2:其他维度

稀疏

稀疏

2

传递 1:帐户和时间维

通过 2:其他维度

稀疏

密集

2

传递 1:帐户维

通过 2:其他维度

如果使用标记为“双遍”的公式,则 Essbase 可能需要执行额外计算传递来计算这些公式。

使用计算脚本计算数据库时,需要执行 Essbase 的计算通过数取决于计算脚本。

Essbase 会将每次传递的维的计算顺序以及通过多维数据集执行的周期数写入应用程序日志。

对于每个块, Essbase 将根据块中的值类型决定是进行密集计算还是进行稀疏计算。运行默认计算 (CALC ALL) 时,将根据每个区块的区块编号按顺序处理。

Essbase 使用此过程计算块:

  • 如果启用了智能计算,并且不需要计算该块(如果该块标记为干净),则 Essbase 将跳过该块并移至下一个块。

  • 如果块需要重新计算,则 Essbase 会检查块是 0 级、输入还是上层块。

  • 如果块是 0 级块或输入块,则 Essbase 会对块执行密集计算。将计算块中的每个单元格。

  • 如果块是上层块,则 Essbase 会合并这些值或对该块执行稀疏计算。

    每个上层块的稀疏成员组合至少包含一个父成员。Essbase 根据父代成员的维合并或计算块。例如,如果上层块在 Sample.Basic 数据库中用于 Product -> Florida,则 Essbase 会选择 Product 维。

    如果块的稀疏成员组合具有多个父代成员,则 Essbase 将按计算顺序选择包含父代成员的最后一个维。例如,如果块用于“产品”->“东部”,并且您对 Sample.Basic 数据库执行默认计算,则 Essbase 将选择“市场”维,其中包含“东部”。市场维是默认计算顺序中的最后一个维,因为它位于数据库大纲中的“产品”维之后。请参阅成员计算顺序

    根据所选稀疏维, Essbase 会合并值或对块执行稀疏计算:

    • 如果将公式应用于所选稀疏维上的块成员,则 Essbase 会对稀疏维执行公式计算。Essbase 对块中的每个单元格进行求值。公式仅影响稀疏维上的成员,因此整体计算性能不会受到显著影响。

    • 如果所选稀疏维是默认合并,则 Essbase 将合并这些值,并采用以前计算的子块的值。