自下而上和自上而下计算

Essbase 块存储多维数据集中,自上而下的计算效率低于自下而上的计算效率,因为计算的块数超过了所需的数量。在某些情况下,可能需要自上而下的计算,以确保计算结果正确。

Essbase 使用自下而上计算或自上而下计算来执行数据库大纲的完整计算。默认情况下, Essbase 在非混合模式的块存储多维数据集中使用自下而上的计算。

注意:

如果多维数据集使用混合模式(这是 Essbase 21c 中的默认模式),则可以跳过本主题中的信息。混合模式多维数据集已针对动态相关性分析进行了优化。要了解更多信息,请参阅 Adopt Hybrid Mode for Fast Analytic Processing

对于自下而上的计算, Essbase 确定在计算多维数据集之前必须计算哪些数据块。然后, Essbase 仅计算必须计算的块。计算从块编号最低的现有块开始,并按编号顺序遍历每个块,直到达到块编号最高的现有块为止。请参阅块计算顺序

如果大纲包含复杂成员公式,则 Essbase 会为相关成员执行自上而下的计算。

自下而上的计算和简单公式

对于简单公式, Essbase 会执行自下而上的计算,以确定在运行完整计算之前必须计算哪些块。例如,对于成员上的简单公式(例如 A = B + C),仅当数据库中存在 B 或 C 时才计算 A。也就是说,在开始计算之前,公式对 B 和 C 的依赖性是已知的。

自上而下计算和复杂公式

在开始计算之前, Essbase 会搜索大纲并标记需要自上而下计算的复杂公式;例如,包含跨维引用的成员公式。当 Essbase 达到具有自上而下公式的成员时,它会对该成员执行自上而下的计算。

当成员上的公式很复杂时,必须检查成员的所有可能块,以查看是否必须更改现有块或是否已创建新块;在计算开始之前,很难确定块对其他块的依赖性。自上而下的方法会降低计算性能,因为 Essbase 必须搜索要计算的相应块才能执行公式。

编译公式时,如果要从上至下计算公式,则 Essbase 会将消息记录在应用程序日志文件中。

请考虑以下复杂公式:

A = B -> D + C -> D

为了计算公式, Essbase 必须检查 A 的每个组合,以确定是否存在 B -> D 或 C -> D。

请参见 Complex Essbase Member Formulas

强制执行自下而上计算

如果它适用于站点,则可以对自上而下的公式强制执行自下而上的计算。

要强制执行自下而上的计算,请使用以下方法之一:

对公式强制执行自下而上的计算通常会增加绩效时间。如果公式包含复杂函数(例如范围函数),或者公式的相关性不是直接的,则自下而上的计算可能会产生与自上而下的计算不同的结果。

注意:

在生产环境中更改设置 CALCOPTFRMLBOTTOMUP 或使用计算脚本命令 SET FRMLBOTTOMUP 之前,通过比较(相对于相同数据)、自下而上计算的结果和自上而下计算的结果 ) 来检查计算结果的有效性。