欢迎来到 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
表示Yr
要Version
使用替换变量。这意味着您的服务器或多维数据集具有替换变量值集,例如变量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 以类似的方式工作,但使用成本中心或其他方式。这完全取决于多维数据集的设置方式。