优化 BSO 多维数据集

优化 BSO 多维数据集可减小数据库大小;其中涉及以下过程:

  • 将零块替换为 #missing 块
  • 删除 #missing 块以减小数据库大小
  • 对数据类型为“智能列表”、“日期”、“文本”和“百分比”的成员,使用从不作为合并运算符

删除 BSO 多维数据集中的零

首先通过将多维数据集中稀疏维中的零块替换为 #missing 块,删除这些零块。

要将零块替换为 #missing 块:

  1. 创建用于将零块替换为 #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:

    • 尽管默认情况下,UPDATECALCCREATENONMISSINGBLKCREATEBLOCKONEQ 处于禁用状态,Oracle 建议在业务规则中显式关闭它们。
    • 务必将 "SparseDim" 替换为要替换零块的稀疏维的名称。
    • 使用 FIXPARALLEL 以帮助提高性能,例如 FIXPARALLEL(4, @RELATIVE("Scenario",0))
    • 务必指定 ENDFIXPARALLEL
  2. 使用以下优化计算设计之一将零块更改为 #missing 块。根据您的维设计、数据模式和流程,选择性能更好的计算设计。

    计算设计 1(适用于密集或稀疏计算)

    此计算将生成原始值,并将零值更改为 #missing。

    "DenseMbr" = "DenseMbr" * "DenseMbr" / "DenseMbr";
    "SparseMbr" = "SparseMbr" * "SparseMbr" / "SparseMbr";

    计算设计 2(仅适用于块模式下的密集成员)

    "DenseBlockHeader" (
        @CALCMODE(BLOCK);
           IF ("DenseMbr" == 0) 
               "DenseMbr" = #Missing;
           ENDIF

    Note:

    DenseMbrSparseMbrDenseBlockHeader 应替换为实际名称。

从多维数据集中删除 #Missing 块

删除 #missing 块以减小 BSO 数据库大小。使用以下两种方法之一清除 #missing 块:

方法 1

执行显式密集重建

Planning 中,可以手动或通过作业运行此过程。也可以使用 EPM Automate 和 REST API 执行数据库重建。

要使用 Calculation Manager 执行数据库重建:

  1. 打开 Calculation Manager。从导航器 中,从创建和管理中选择规则
  2. 单击操作,然后选择数据库属性
  3. 企业视图中,展开包含要重建的多维数据集的数据库。
  4. 右键单击要重建的多维数据集,然后选择重建数据库

信息源:

  • 《在 Oracle Enterprise Performance Management Cloud 中使用 EPM Automate》中的 restructureCube 命令
  • 《REST API for Oracle Enterprise Performance Management Cloud》中的“Restructure Cube

方法 2

清除所有数据。从以前上传到环境的文件重新加载所有数据。

对数据类型为“智能列表”、“日期”、“文本”和“百分比”的成员,使用“从不”作为合并运算符

数据类型为“智能列表”、“日期”、“文本”和“百分比”的维成员应使用从不作为合并运算符。使用“加法”合并运算符会增加多维数据集大小,但不会添加任何值。使用“忽略”作为合并运算符将仅停止成员的维中的加法;它不会停止汇总来自其他维的值,这可能会创建不需要的块。