优化 BSO 多维数据集可减小数据库大小;其中涉及以下过程:
从不作为合并运算符。执行显式多维数据集重建
在 Planning 中,您可以手动或通过作业运行显式多维数据集重建。您还可以使用 restructureCube EPM Automate 命令或重建多维数据集 REST API 重建多维数据集。
Note:
要使用 Calculation Manager 重建多维数据集:
分析多维数据集中的数据
首先生成 Essbase 块分析报表。请参阅以下信息源:
Note:
当您将多维数据集数据导出到导出文件(在生成 Essbase 块分析报表时,该文件将用作源)时,多维数据集置于只读模式。根据多维数据集的大小,导出可能需要一些时间。因此,建议将您的实例克隆到测试实例,以便进行此分析。Essbase 块分析报表提供有关以下三个方面的信息:
仅具有接近零值的单元格百分比,显示块中具有接近零值(例如 0.000000001604)的单元格百分比。
将 BSO 多维数据集中的接近零值转换为零
要删除 BSO 多维数据集中稀疏维中的接近零值或非常小的值,请使用 @round 或 @truncate 函数,这些函数可将它们转换为零。然后可以删除这些零值,并将它们替换为 #missing 块。请参阅“删除 BSO 多维数据集中的零”。
要将接近零值转换为零:
配置业务规则环境以优化此规则。此规则当前设置为在 0 级运行。在将接近零值转换为零并从多维数据集中清除后(请参阅下一节),如果启用了 SET AGGMISSG,则在下次聚合期间还会从高级别成员中清除这些值。
SET UPDATECALC OFF;
SET CREATENONMISSINGBLK OFF;
SET CREATEBLOCKONEQ OFF;
FIXPARALLEL(NumberThreads, @RELATIVE("SparseDim",0))
FIX on all level 0 sparse dimension @RELATIVE(SparseDim,0)
Note:
UPDATECALC、CREATENONMISSINGBLK 和 CREATEBLOCKONEQ 处于禁用状态,但 Oracle 建议在业务规则中明确禁用它们。SparseDim" 替换为要替换零块的稀疏维的名称。FIXPARALLEL 以帮助提高性能,例如 FIXPARALLEL(4, @RELATIVE("Scenario",0))。ENDFIXPARALLEL。计算设计 1(适用于密集或稀疏计算)
此计算将接近零值更改为零。
"DenseMbr" = @round("DenseMbr",<Insert Decimal Place>);
"SparseMbr" = @round("SparseMbr ",<Insert Decimal Place>);
计算设计 2(仅适用于块模式下的密集成员)
"DenseBlockHeader" (
@CALCMODE(BLOCK);
"DenseMbr" =@round("DenseMbr",<Insert Decimal Place>);
)
删除 BSO 多维数据集中的零
首先通过将多维数据集中稀疏维中的零块替换为 #missing 块,删除这些零块。
要将零块替换为 #missing 块:
设置业务规则环境以优化此业务规则:
SET UPDATECALC OFF;
SET CREATENONMISSINGBLK OFF;
SET CREATEBLOCKONEQ OFF;
FIXPARALLEL(NumberThreads, @RELATIVE("SparseDim",0))
FIX on all level 0 sparse dimension @RELATIVE(SparseDim,0)
Note:
UPDATECALC、CREATENONMISSINGBLK 和 CREATEBLOCKONEQ 处于禁用状态,Oracle 建议在业务规则中显式关闭它们。SparseDim" 替换为要替换零块的稀疏维的名称。FIXPARALLEL 以帮助提高性能,例如 FIXPARALLEL(4, @RELATIVE("Scenario",0))。ENDFIXPARALLEL。计算设计 1(适用于密集或稀疏计算)
此计算将生成原始值,并将零值更改为 #missing。
"DenseMbr" = "DenseMbr" * "DenseMbr" / "DenseMbr"; "SparseMbr" = "SparseMbr" * "SparseMbr" / "SparseMbr";
计算设计 2(仅适用于块模式下的密集成员)
"DenseBlockHeader" (
@CALCMODE(BLOCK);
IF ("DenseMbr" == 0)
"DenseMbr" = #Missing;
ENDIF
Note:
DenseMbr、SparseMbr 和 DenseBlockHeader 应替换为实际名称。对数据类型为“智能列表”、“日期”、“文本”和“百分比”的成员,使用“从不”作为合并运算符
数据类型为“智能列表”、“日期”、“文本”和“百分比”的维成员应使用从不作为合并运算符。使用“加法”合并运算符会增加多维数据集大小,但不会添加任何值。使用“忽略”作为合并运算符将仅停止成员的维中的加法;它不会停止汇总来自其他维的值,这可能会创建不需要的块。