有人可以向我解释下面的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
根据我的搜索,以下是我的理解:
创建一个新的命令块,该命令块将数据库计算限制为该子集。
将以下成员传递到要使用的命令中:
返回以下字段:
开始一个新的命令块,并将以下成员传递到要使用的命令中:
将单元格1A11,A-500的范围复制到范围1BCD,C-800
以上是我从oracle文档中对每个函数的了解,但是我实际上无法弄清楚正在发生什么。
答案 0 :(得分:1)
欢迎来到Essbase的世界;刚开始时可能会有些令人生畏,特别是如果您是多维概念的新手。您正在正确地分析calc脚本。
尽量不要将FIX
语句本身视为命令块。 FIX
用于选择多维数据集中的一部分单元格。多维数据集中的每个数据都有一个特定的地址,该地址由每个维度的一个成员加上实际数据值本身组成。例如,维度为时间,年份,场景和位置的多维数据集可能在Jan->2018->Actual->Washington
处具有特定的数据。多维数据集中数据的可能排列数量会很快变得非常大。例如,如果您的组织有4年的数据,一年中的12个月,100个地点,10000个帐户,3个版本和10个部门,则您所谈论的是4 * 12 * 100 * 10000 * 3 * 10 = 1.4十亿个不同的数据潜在地址(单元)–对于多维数据集来说,这实际上很小,因为它们会变得更大。
也就是说,FIX
语句用于缩小计算操作的范围,而不是在ENTIRE多维数据集(在我的假设示例中为所有14亿个像元)上操作,FIX
本质上限制了计算符合您指定的某些条件的单元格。在这种情况下,第一个FIX
语句将计算限制为特定的月份,年份,版本,扇区,源和渠道。请注意,Mth
,Yr
和Version
上的&表示将使用替换变量。这意味着您的服务器或多维数据集具有替换变量值集,例如变量Mth = "Jan"
和Yr = "FY2018"
,而Version可能是"Working"
或"Final"
或类似名称。我猜想Sector1和Sector2可能是同一维度中的两个不同成员。 @RELATIVE("Source Code", 0)
是一个函数,用于查找指定成员的0级成员(维度中的叶/底部成员,即在其下面没有子级的成员)。
换句话说,第一个FIX语句将计算范围缩小到特定版本中的特定年份中的特定月份(而不是所有月份,所有年份,所有版本),以及该特定月份/年/版本(对于部门1或部门2),它固定在源代码和渠道维度中的所有0级/底部/叶成员上。
除了外部FIX,下一个FIX语句进一步缩小了当前要计算的像元范围。看到像这样嵌套的FIX语句并不少见。
最后,我们进入实际发生的部分:数据复制。在给定的FIX上下文中,此DATACOPY命令表示对于当前FIX中的每个单元,将值从源复制到目标。相对于使用跨维运算符(->)而言,DATACOPY只是DATACOPY从“源”到“目标”而已,它更直接一些……但是从时间/年份的维度上可能更容易理解。例如,假设数据副本是这样写的:
DATACOPY "FY2018"->"Dec" TO "FY2019"->"Jan";
在此DATACOPY中,我要告诉Essbase,对于给定的FIX上下文,我要将值从年末(年份为FY2018,月份为12月)复制到下一个年初年(数据值为年份为2019财政年度,月份为1月)。您的DATACOPY以类似的方式工作,但是使用成本中心或其他方式。一切都取决于多维数据集的设置方式。