首页 > 解决方案 > 有人可以解释以下 Essbase 代码:FIX,@relative

问题描述

有人可以向我解释一下下面的 Essbase 代码吗?这是我第一次查看任何 Essbase 代码,我对它实际上在做什么感到有些困惑。

FIX(&Mth, &Yr, &Version,
        "Sector1","Sector2", @relative("Source Code",0), @relative("Channel", 0) )
    FIX("AccountNo","DepNo")

    DATACOPY "1A11"->"A-500" TO "1BCD"->"C-800"; 

    ENDFIX
ENDFIX

根据我的谷歌搜索,以下是我的理解:

  1. 创建一个新的命令块,将数据库计算限制在这个子集中。

  2. 将以下成员传递给要使用的命令:

    • 第 Mth
    • 版本
  3. 返回以下字段:

    • 扇区1
    • 扇区2
    • 返回源代码成员的 0 级成员 - 意味着它返回没有子级的总源代码成员(没有其他维度)
    • 返回 Channel 成员的 0 级成员 - 意味着它返回没有子级的 Channel 成员(没有其他维度)
  4. 开始一个新的命令块并将以下成员传递给要使用的命令:

    • 户口号码
    • 部门编号
  5. 将单元格 1A11、A-500 的范围复制到范围 1BCD、C-800

以上是我从每个功能的oracle文档中了解到的,但我实际上无法弄清楚发生了什么。

标签: essbase

解决方案


欢迎来到 Essbase 的世界;一开始可能有点令人生畏,特别是如果您不熟悉多维性的概念。您在分析 calc 脚本方面走在正确的轨道上。

尽量不要将FIX语句本身视为命令块。AFIX用于选择多维数据集中的一部分单元格。多维数据集中的每一条数据都有一个特定的地址,该地址由每个维度的一个成员以及实际数据值本身组成。例如,具有维度时间、年份、场景和位置的多维数据集可能在Jan->2018->Actual->Washington. 多维数据集中可能的数据排列数量很快就会变得非常大。例如,如果您的组织有 4 年的数据,一年中有 12 个月,100 个位置,10000 个帐户,3 个版本和 10 个部门,那么您说的是 4 * 12 * 100 * 10000 * 3 * 10 = 1.4十亿个不同的潜在数据地址(单元)——这对于一个立方体来说实际上是相当小的,因为它们往往会变得更大。

也就是说,FIX语句用于缩小计算操作的范围,而不是对整个立方体(在我的假设示例中的所有 14 亿个单元格)进行操作,FIX本质上将计算限制为与您指定的某些标准匹配的单元格。在这种情况下,第一条FIX语句将计算限制为特定的月份、年份、版本、部门、来源和渠道。注意 , , 和 上的 &Mth表示YrVersion使用替换变量。这意味着您的服务器或多维数据集具有替换变量值集,例如变量Mth = "Jan"andYr = "FY2018"和 Version 可能是"Working"or"Final"或类似的东西。我猜想 Sector1 和 Sector2 可能是来自同一维度的两个不同成员。@RELATIVE("Source Code", 0)是一个函数,用于查找指定成员的第 0 级成员(维度中的叶/底层成员,即其下没有子级的成员)。

换句话说,第一个 FIX 语句将计算范围缩小到特定版本中特定年份的特定月份(而不是所有月份、所有年份、所有版本),以及该特定月份/年份/版本(对于 Sector1 或 Sector2)它固定在 Source Code 和 Channel 维度中的所有 level-0/bottom/leaf 成员上。

除了外部 FIX 之外,下一个 FIX 语句只是进一步缩小了当前要计算的单元格范围。像这样嵌套的 FIX 语句并不少见。

最后我们到了实际发生的部分:DATACOPY。在给定的 FIX 上下文中,此 DATACOPY 命令表示对于当前 FIX 中的每个单元格,将值从源复制到目标。DATACOPY 只是将 DATACOPY“源”到“目标”而不是使用跨维运算符 (->) 时更简单一些……但这可能更容易从时间/年份维度来理解。例如,假设数据副本是这样编写的:

DATACOPY "FY2018"->"Dec" TO "FY2019"->"Jan";

在此 DATACOPY 中,我将告诉 Essbase,对于给定的 FIX 上下文,我想将年末的值(年份为 FY2018 且月份为 12 月的数据值)复制到明年年初(数据年份为 2019 财年且月份为一月的值)。您的 DATACOPY 以类似的方式工作,但使用成本中心或其他方式。这完全取决于多维数据集的设置方式。


推荐阅读