欢迎来到 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 语句将计算限制为特定的月份、年份、版本、部门、来源和渠道。请注意,Mth、Yr 和 Version 上的与符号表示要使用替换变量。这意味着您的服务器或多维数据集设置了替换变量值,例如变量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 以类似的方式工作,但使用成本中心或其他方式。这完全取决于多维数据集的设置方式。