计算和查询联合分区多维数据集

当您具有联合分区时,Essbase 会尽可能将 Essbase 计算和查询转换为 SQL,并将其推送到自治数据仓库,以便在数据存储位置进行处理。

Essbase 多维数据集大纲包含元数据(维名称和成员名称)。自治数据仓库保存与元数据关联的数据。数据存储在事实表中。

由于 Essbase 将计算处理推送到数据存储位置,因此这有助于解决数据延迟问题。这是从 Essbase 21.5 开始提供的新功能。

如果您刚开始使用 Essbase,请先查看计算多维数据集以了解有关计算的一般信息。

使用联合分区时的计算方式取决于您在创建联合分区时使用的 Essbase 多维数据集类型:块存储 (BSO) 或聚合存储 (ASO)。

计算比较说明

对于基于 BSO 的联合分区多维数据集,当您计算和查询时,Essbase 会分析相关项并写入 SQL 以在自治数据仓库中使用分析视图处理结果。

对于基于 ASO 的联合分区多维数据集,Essbase 服务器会处理定制计算和分配,然后将结果推送到自治数据仓库。

有关联合分区计算的说明/限制

Essbase 块存储 (BSO) 计算函数可以应用于 BSO 大纲公式,其结果会影响从 Smart View、MDX 及其他网格客户端进行的查询。可以使用相同的函数以及计算命令编写过程计算脚本。

在自治数据仓库中进行处理的计算函数

使用联合分区时,以下 Essbase 计算函数会转换为 SQL 并在自治数据仓库中进行处理。未在此处列出的其他函数在 Essbase 中进行处理。

  • @ABS
  • @ALLANCESTORS
  • @ANCEST
  • @ANCESTORS
  • @AVG(仅与 SKIPMISSING 选项一起使用)
  • @AVGRANGE
  • @CHILDREN
  • @CURRMBR
  • @DESCENDANTS
  • @EXP
  • @FACTORIAL
  • @GENMBRS
  • @IALLANCESTORS
  • @IANCESTORS
  • @ICHILDREN
  • @IDESCENDANTS
  • @INT
  • @IRDESCENDANTS
  • @ISANCEST
  • @ISCHILD
  • @ISDESC
  • @ISGEN
  • @ISIANCEST
  • @ISIBLINGS
  • @ISICHILD
  • @ISIDESC
  • @ISIPARENT
  • @ISISIBLING
  • @ISLEV
  • @ISMBR(参数仅为一个成员名称时)
  • @ISPARENT
  • @ISSAMEGEN
  • @ISSAMELEV
  • @ISSIBLING
  • @LEVMBRS
  • @LN
  • @LOG
  • @LOG10
  • @LSIBLINGS
  • @MAX
  • @MAXRANGE(例外:无 XrangeList 参数)
  • @MAXS
  • @MAXSRANGE(例外:无 XrangeList 参数)
  • @MBRPARENT
  • @MEDIAN(例外:无 XrangeList 参数)
  • @MEMBERAT
  • @MIN
  • @MINRANGE(例外:无 XrangeList 参数)
  • @MINS
  • @MINSRANGE(例外:无 XrangeList 参数)
  • @MOD
  • @PARENT
  • @POWER
  • @RDESCENDANTS
  • @RELATIVE
  • @REMAINDER
  • @ROUND
  • @RSIBLINGS
  • @SIBLINGS
  • @SUM
  • @SUMRANGE(例外:无 XrangeList 参数)
  • @TRUNCATE
  • @XREF
  • @XWRITE

在自治数据仓库中进行处理的计算命令

使用联合分区时,以下 Essbase 计算命令会转换为 SQL 并在自治数据仓库中进行处理。

  • AGG(例外:聚合动态计算成员,或使用非相加合并运算符聚合成员)
  • CLEARDATA
  • CLEARBLOCK(例外:无 NONINPUT 或 DYNAMIC 关键字)
  • DATAEXPORT(例外:仅在使用以下数据导出选项时)
    DATAEXPORTLEVEL ALL
    DATAEXPORTCSVFORMAT
    DATAEXPORTOVERWRITEFILE
    DATAEXPORTDECIMAL
  • IF...ENDIF
  • ELSE...ELSEIF(表达式包含多个嵌套的 IF/ELSE 语句时,性能可能较低)
  • EXCLUDE...ENDEXCLUDE
  • LOOP...ENDLOOP
  • DATACOPY
  • 表达式包含数学运算的 FIX 语句赋值、IF/ELSE 语句、交叉引用,以及此页所列的支持的 @ 函数。

命令 ARRAY 和 VAR,以及在 CALC DIM 或 CALC ALL 中处理的动态公式都在 Essbase 中进行处理,性能可能较低。

联合分区多维数据集不支持一些计算命令,如果使用这些命令,将返回错误。请参见联合分区的限制

如果您需要运行 Essbase 块存储 (BSO) 计算脚本,请选择密集维作为透视维。如果透视维是稀疏维,则联合分区不支持计算脚本。

块计算模式(在 Essbase 配置设置 CALCMODE 设为 BLOCK 时启用)不适用于联合分区多维数据集。计算处理会推送到自治数据仓库。如果存在异常,并且计算改为在 Essbase 服务器上处理,则由解析顺序确定相关性分析。

在对具有联合分区的聚合存储多维数据集执行定制分配时,只能覆盖现有值。不能向现有值添加值或从其减去值。

其他限制

请参见联合分区的限制

查询结果中的精度位数

当您计算具有联合分区的多维数据集时,自治数据仓库会部分处理计算和聚合。因此,与未使用联合分区时得到的值相比,查询结果的精度值可能稍有不同。

计算顺序

混合模式 BSO 多维数据集和 ASO 多维数据集相似,联合分区多维数据集中成员的计算优先级遵循您在 Essbase 大纲上设置的已定义解析顺序

能够运行 Essbase 计算和数据加载作业

对于具有联合分区的任何块存储 (BSO) 应用程序,默认情况下,Essbase 配置设置 FEDERATEDAVCALC 隐式设置为 TRUE。这样,用户就可以运行 Essbase BSO 计算并通过 Essbase 执行数据加载,以更新自治数据仓库事实表中的记录。