监视和跟踪计算

监视和跟踪 Essbase 计算,以深入了解成员公式处理。CALCTRACE 和 SET TRACE 可帮助您跟踪从 Smart View 运行的计算或存储的计算。要记录用于测试的性能统计信息,可以使用 SET MSG 和 SET NOTICE。

要启用计算跟踪,请使用 CALCTRACE 配置属性,然后使用 Smart View 开始上下文相关跟踪,或者在计算脚本中使用 SET TRACE 命令选择要跟踪的数据交叉点。有关详细信息,请参阅跟踪计算

要在应用程序日志中显示有关 Essbase 如何计算多维数据集的信息,可以在计算脚本中使用 SET MSG 和 SET NOTICE。请参阅 SET Commands for Calc Testing and Statistics

跟踪计算

可使用 Essbase 计算跟踪深入了解成员公式处理,从而帮助您调试和优化块存储计算脚本。启用 CALCTRACE 以进行上下文相关的 Smart View 计算跟踪,或使用 SET TRACE 命令选择要跟踪的数据交叉点。

对多维数据集成功执行计算脚本后,使用计算跟踪可以访问有关计算的日志记录信息。

跟踪计算不会更改有关计算行为的任何方面。如果在 Smart View 中启用了计算,并且管理员为连接的服务器启用了计算跟踪,则在计算运行后,Smart View 会显示包含详细信息的弹出式对话框。计算跟踪信息可以从弹出式对话框粘贴到文本编辑器中。也可以在 calc_trace.txt 中找到相同信息,该文件位于 Essbase 的数据库文件目录中。

计算结果不符合预期时,计算跟踪信息可以帮助您调试计算脚本执行。

启用了方案管理的应用程序不支持计算跟踪。

要启用计算跟踪,管理员必须首先启用 CALCTRACE 应用程序配置参数。为应用程序启用计算跟踪后,可以采用两种方法来利用它:

  • Smart View 中,您可以针对单个单元格值使用上下文相关跟踪。
    1. Smart View 中,将查询工作表连接到您为其启用了计算跟踪的应用程序。
    2. 突出显示您要跟踪其计算值的数据单元格。
    3. 在 Essbase 选项卡的“数据”面板中,单击计算按钮并选择要执行的计算脚本。您将会在跟踪成员运行时提示中的突出显示数据单元格中看到视点。
    4. 单击启动以执行计算脚本。

      将计算脚本中包含的计算的整个范围,但在计算期间将仅跟踪突出显示的数据单元格上下文。

    5. 在计算脚本结束时,观察计算结果对话框,其中显示了突出显示的数据单元格的计算前和计算后结果。

      如果突出显示的数据单元格在计算期间没有修改,则您会看到一条消息,指出单元格未修改。

  • 在计算脚本中,可以使用 SET TRACE 计算命令选择要跟踪的数据交叉点。使用 SET TRACE 可以跟踪多个数据单元格。另外,通过结合使用 SET TRACE mbrList(用以针对一个成员列表启用计算跟踪)和 SET TRACE OFF(用以禁用计算跟踪,直到在脚本中遇到新的 SET TRACE),可以跟踪计算脚本的各个部分。To use SET TRACE command, you must execute the calculation script outside of Smart View, using Cube Designer, the CLI calc command, a Run Calculation job in the Essbase web interface, or MaxL (execute calculation statement).

在 Sample Basic 上运行以下计算脚本。该脚本包含 SET TRACE 命令,用于请求要为数据交叉点(单元格),该数据交叉点(单元格)表示在加利福尼亚市场中,SKU 编号为 100-10 的产品的 1 月销售预算。

SET TRACEID "id042"
SET TRACE ("100-10", "California", "Jan", "Sales", "Budget");
FIX("California", "Budget")
   "Sales" (
      "100-10" = @MEMBER(@CONCATENATE(@NAME(@PARENT("Product")), "-20")) / 10;
   );
ENDFIX;

注意:

还建议使用 SET TRACEID 命令,以防止您的计算跟踪文件被覆盖。

Sample Basic 具有两个稀疏维:Product 和 Market。成员公式位于度量成员 Sales 上,这是一个密集维。FIX 语句的成员列表只包含一个稀疏维 California,它属于 Market 维。

FIX 范围内现有块的数目可确定所跟踪单元格的计算次数。在本例中,计算将循环处理 California 的所有现有稀疏成员组合。这些组合中的每一项都表示一个块。

计算完成后,会记录以下跟踪信息并显示在 calc_trace_id042.txt 中:

Tracing cell: [100-10][California][Jan][Sales][Budget]  (Cell update count: 1)
Previous value: 840.00
Dependent values: 
	[100-20][California][Jan][Sales][Budget] = 140.00
New value: [100-10][California][Jan][Sales][Budget] = 14.00

Computed in lines: [91 - 93] using:
"Sales"(
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10;
)

Tracing cell: [100-10][California][Jan][Sales][Budget]  (Cell update count: 2)
Block from FIX scope: [100-30][California]
Actual block used in calculation: [100-10][California]
Previous value: 14.00
Dependent values: 
	[100-20][California][Jan][Sales][Budget] = 140.00
New value: [100-10][California][Jan][Sales][Budget] = 14.00
Computed in lines: [91 - 93] using:
"Sales"(
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10;
)

Tracing cell: [100-10][California][Jan][Sales][Budget]  (Cell update count: 3)
Block from FIX scope: [200-10][California]
Actual block used in calculation: [100-10][California]
Previous value: 14.00
Dependent values: 
	[200-20][California][Jan][Sales][Budget] = 520.00
New value: [100-10][California][Jan][Sales][Budget] = 52.00
Computed in lines: [91 - 93] using:
"Sales"(
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10;
)

[...calc iterations 4-7 are omitted from example...]

Tracing cell: [100-10][California][Jan][Sales][Budget]  (Cell update count: 8)
Block from FIX scope: [400-30][California]
Actual block used in calculation: [100-10][California]
Previous value: 9.00
Dependent values: 
	[400-20][California][Jan][Sales][Budget] = 90.00
New value: [100-10][California][Jan][Sales][Budget] = 9.00
Computed in lines: [91 - 93] using:
"Sales"(
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10;
)

计算跟踪日志可针对所跟踪单元格提供有关计算工作方式的以下洞察:

  • 跟踪的单元格计算了多次,并且单元格值每次都由新值覆盖(报告的单元格更新计数停止在 8)。

  • 该单元格的值在计算前是 840.00。

  • 对于每次计算,会显示相关值和新值。相关值来自 FIX 语句中的成员公式。

  • 在所有计算完成后,跟踪的单元格的最终值为 9,但它表示产品 "400-20"->California 的值除以 10。

  • 计算脚本的第 91-93 行包含有关 Sales 的成员公式,这些行负责生成更新值。

对于循环处理的每个块,将使用以下公式计算 Sales:

"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10

该公式左侧包含一个稀疏成员,可导致实际计算块与初始 FIX 块不相同。例如,当循环处理 "California"->"100-20" 进行计算时,实际在 "California"->"100-10" 处完成计算。

仅当 FIX 语句中的数据块与成员公式中所表示的数据块之间存在差异时,才会输出标题为 Block from FIX scopeActual block used in calculation 的跟踪日志条目。对于存在重复计算的原因,这些日志条目可以提供线索,帮助您调试计算脚本。

用于计算测试和统计信息的 SET 命令

您可以在 Essbase 块存储计算脚本中使用 SET 命令来收集可用于测试和监视计算性能的计算信息、设置和统计信息。这些命令包括 SET MSG SUMMARY、SET MSG DETAIL 和 SET NOTICE。

SET MSG 摘要和 SET MSG 详细信息

可以在计算脚本中使用 SET MSG SUMMARY 和 SET MSG DETAIL 计算命令执行以下操作:

  • 显示计算设置,例如是否启用完成通知消息

  • 提供关于已创建、读取和写入的数据块数量的统计信息

  • 提供有关计算的数据单元数的统计信息

每次 Essbase 计算数据块时,SET MSG DETAIL 还会提供信息消息。SET MSG DETAIL 用于检查数据块的计算顺序和测试智能重新计算。

注意:

由于 SET MSG DETAIL 导致较高的处理开销,因此仅在测试计算期间使用它。

SET MSG SUMMARY 导致处理开销约为 1% 到 5%,具体取决于立方体大小,因此适用于所有计算。

设置通知

您可以在计算脚本中使用 SET NOTICE 计算命令来显示计算完成通知,这些通知告诉您已计算多维数据集的百分比。您可以将 SET MSG SUMMARY 命令与 SET NOTICE 命令一起使用,以显示完成通知之间的计算进度。完成通知不会显著降低计算性能,除非与非常小的立方一起使用。