essbase - 有人可以解释以下 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
根据我的谷歌搜索,以下是我的理解:
创建一个新的命令块,将数据库计算限制在这个子集中。
将以下成员传递给要使用的命令:
- 第 Mth
- 年
- 版本
返回以下字段:
- 扇区1
- 扇区2
- 返回源代码成员的 0 级成员 - 意味着它返回没有子级的总源代码成员(没有其他维度)
- 返回 Channel 成员的 0 级成员 - 意味着它返回没有子级的 Channel 成员(没有其他维度)
开始一个新的命令块并将以下成员传递给要使用的命令:
- 户口号码
- 部门编号
将单元格 1A11、A-500 的范围复制到范围 1BCD、C-800
以上是我从每个功能的oracle文档中了解到的,但我实际上无法弄清楚发生了什么。
解决方案
欢迎来到 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 以类似的方式工作,但使用成本中心或其他方式。这完全取决于多维数据集的设置方式。
推荐阅读
- shell - 递归查找文件大小大于 1 GB 的目录中的文件
- azure - consumer.azure.com 的 v3 API 大部分时间都无法返回 offerId
- navigationbar - SwiftUI navigationBarTitle - displayMode: .inline - 崩溃
- excel - 使用 Powershell 从 Excel 工作表中获取复选框?
- reactjs - Material-UI 中添加的自托管字体不起作用?
- javascript - 如何使用 php 标签在 grid.js 中编写获取文本
- sql-server - 如何在 SQL 和 LINQ 中获取每个员工的第二个最高工资值?
- openxml - 我在 C# 中使用 OpenXML 创建 xlsx 文件,但日期为 1900 年 1 月
- c++ - 如何优雅地实现具有可变输出的单一方法?
- collection-select - 为什么我不能使用这个代码 f.collection_select