【问题标题】:Can someone explain the following Essbase code: FIX, @relative有人可以解释以下 Essbase 代码:FIX,@relative
【发布时间】:2019-01-14 22:59:06
【问题描述】:

有人可以向我解释一下下面的 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. 将以下成员传递给要使用的命令:

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

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

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

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

【问题讨论】:

    标签: essbase


    【解决方案1】:

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

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

    也就是说,FIX 语句用于缩小计算操作的范围,而不是对整个立方体(在我的假设示例中的所有 14 亿个单元格)进行操作,FIX 基本上将计算限制为单元格符合您指定的某些条件。在这种情况下,第一个FIX 语句将计算限制为特定的月份、年份、版本、部门、来源和渠道。请注意,MthYrVersion 上的与符号表示要使用替换变量。这意味着您的服务器或多维数据集设置了替换变量值,例如变量Mth = "Jan"Yr = "FY2018" 和版本可能是"Working""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 以类似的方式工作,但使用成本中心或其他方式。这完全取决于多维数据集的设置方式。

    【讨论】:

    • 非常感谢。这确实比我阅读的任何在线文章都更好地帮助和解释了一切,非常感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多