Oracle Essbase入门系列(四)
成员存储类型
除了大纲计算,维度成员的另一项重要属性是存储类型,存储类型决定维度成员相关单元格的物理存储方式。在维库中编辑成员的【Data Storage】属性,下拉菜单中可选的5种,再加上Shared成员,一共6种存储类型。
Store:储存数据。当一个单元格所有成员的存储类型都是Store时,单元格的数据会物理存储。前面说明输入单元格和计算单元格时,似乎存在这样的印象——非0级和带有成员公式的单元格都是不可输入的,必须由子代成员合并或公式计算得到。其实不然,决定单元格是否“可输入”是由存储类型决定的。Store类型的单元格都可输入数据,只不过在执行了计算后被输入数据会被计算结果覆盖。
DynamicCalc:动态计算。相关单元格不存储数据,仅在查询时即时计算。动态计算的成员必须定义计算方法,非0级成员可以通过子代成员合并,0级成员必须有成员公式。使用动态计算的目的,一是可以减少存储空间,二是可以阻止在单元格上输入数据。但如果查询中包含有动态计算成员时,会延长查询响应时间。
DynamicCalcAndStore:动态查询和存储。当第一次查询或数据被标识为脏时,即时计算,计算结果会保存下来,后续查询中就可以使用存储的数据。相比起DynamicCalc,DynamicCalcAndStore平衡了查询性能和存储空间。
LabelOnly:仅标签。既不计算,也不存储数据。仅在层次中作为分组或分级的标签存在。查询LabelOnly成员时,通常显示第一个子成员的数据。
Shared:共享成员。共享成员是对同维度中同名成员的引用,其数据来自于被引用成员。如果在维度中多个地方使用同一成员,可以使用共享成员。例如,Account维度中收入和支出在净收入的成员公式中被引用,可以使用共享成员来实现同样的计算。如图设计大纲,净收入下的共享成员引用了同维度中的支出与收入,按照合并计算符,可以代替成员公式的计算方法。在维库中要加入共享成员,可右击某一成员,在右键菜单中选【插入共享成员】>【作为子代】或【作为同级】。
NeverShare:不共享数据。除了使用Shared类型来显示的定义共享成员外,Essbase中还有些成员是隐式共享。参考图3-48的维度结构,Home成员值实际上等于张大明成员值。Essbase能识别这种关系,并自动将张大明作为Home的共享成员,此称为隐式共享。为了避免隐式共享,可以将Home的存储类型置为NeverShare。
例:张大明家需要制定2013年的家庭预算,在Year维度上,只需做月度收支计划,无需细化到每一日;Home维度上,全家的预算分配到个人时,保留一部分机动资金。还需要定期核对预计收支目标和实际收支间的差异,实际支出应该小于目标支出,实际收入应该大于目标收入。如表是1月的预算与实际收支数据。
此例要求数据库可在Year、Home、Account维度的非0级成员上输入数据,所以首先确保表中相关维度成员的存储类型必须是Store。
由于机动资金,Home成员的支出是要大于子成员支出的总和。而且,要求在Year维度中,就算在日级成员中误输入了数据,也不会影响到月级成员的数据。所以在计算时,非0级成员的输入数据不能被子代成员的合并计算结果覆盖。为此将Scenario维度下预算的合并计算符设为“^”,则预算相关的所有单元格都不使用合并计算符计算。
但同时又希望在Time维度上将月度预算能汇总到季度,再汇总到全年。编辑数据库的默认计算脚本,如下:
接着来看表中差异项的定义,差异是实际和预算的差值,但支出和收入有不同的计算方向。对支出来说,实际小于预算为优,差异等于预算减实际;对收入来说,实际大于预算为优,差异等于实际减预算。这种计算方式可使用费用报告计算(Expense Reporting)功能,费用报告是除了时间平衡外,Account类型维度另一个特有的计算属性。通过将Account维度的成员标注为费用或非费用类型,可控制在@VAR和@VARPER函数中的计算方向。
在维库中将支出及其子成员的【Expense Reporting】属性设置为Expense;收入及其子成员为默认的NonExpense。修改差异的存储类型设为DynamicCalc,成员公式设为:
至此,HomeFinancial数据库已基本满足了例子中提出的需求。将这两节中的修改汇总,数据库模型最终的结构如下:
维度结构:
成员公式:
默认计算脚本:
在维库中检查HomeFinancial应用程序是否都如上修改,如无问题部署到Essbase Server。EPMA目前还无法编辑Essbase计算脚本,因此部署后再修改默认计算脚本。
Oracle Essbase入门系列(四)的更多相关文章
- Oracle Essbase入门系列(二)
本篇开始会一个三口之家的家庭财务数据库为例,讲述Essbase的功能和开发.为了说明EPM应用程序的管理和开发过程,会绕一些弯路,不使用EAS,而尽量用EPMA. 创建应用程序 首先登陆到Worksp ...
- Oracle Essbase入门系列(一)
1. 开篇序 本文是几年前做Hyperion Planning项目时写的,后来陆陆续续有些补充.本来打算将整个EPM写一系列的教程,但HFM写到1/3就没动力了.不过至少Essbase这部分是完整的. ...
- Oracle Essbase入门系列(三)
数据库计算 Essbase中单元格的数据可以是外部输入或计算而得,单元格因而分为输入单元格和计算单元格.计算单元格的计算方法可以通过大纲中维度成员的合并计算符和公式脚本定义,此称为大纲计算定义. 例1 ...
- C语言高速入门系列(四)
C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经 ...
- 6. oracle学习入门系列之六 模式
oracle学习入门系列之六 模式 上篇咱们学习记录了ORACLE数据库中的数据库结构.内存结构和进程等.篇幅 蛤蟆感觉偏多了.这次要休整下,每次笔记不宜太多,不然与书籍有何差别. 我们要保证的是每次 ...
- [转]C# 互操作性入门系列(四):在C# 中调用COM组件
传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...
- [转]oracle学习入门系列之五内存结构、数据库结构、进程
原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大 ...
- spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护
在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...
- Go语言入门系列(四)之map的使用
本系列前面的文章: Go语言入门系列(一)之Go的安装和使用 Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 1. 声明 map是一种映射,可以将键(key)映射到值(val ...
随机推荐
- DataTable与List互换
public static class List2DataTable { #region "Convert Generic List to DataTable" /// <s ...
- Qt 5.7 版本+2013VS环境配置
原本是使用MSVC5.5.1的版本,碍于习惯,之前一直使用creator,后面才转向VS,因为它的调试实在是太棒了,小程序还是creator调试(比如抽出大程序中的小模块之类的) 不知道是版本问题还是 ...
- JS学习之DOM节点的关系属性封装、克隆节点、Dom中Style常用的一些属性等小结
JS DOM节点: 在JS DOM中节点的关系被定义为节点的属性: 通常有以下几种节点之间的关系: (这里的关系是所有浏览器都支持的) parentNode 父节点 childNodes ...
- Class类的理解
在java中,每个类都有一个相应的Class类的对象,因为每个类编译完成后,在生成的.class文件中,就会产生一个Class对象. 在运行期间,如果我们要产生某个类的对象,jvm会检查类 ...
- Win7启动修复(Ubuntu删除后进入grub rescue的情况)
起因:装了win7,然后在另一个分区里装了Ubuntu.后来格掉了Ubuntu所在的分区.系统启动后出现命令窗口:grub rescue:_ 正确的解决方式: 1.光驱插入win7安装盘或者用USB启 ...
- Robot Framework-Mac版本安装
Robot Framework-Mac版本安装 Robot Framework-Windows版本安装 Robot Framework-工具简介及入门使用 Robot Framework-Databa ...
- mysql Blob存取的一个简单例子
一.得到mysql的连接 这里封装成一个方法,方便后面使用. public Connection getConnection() throws Exception{ String url = &quo ...
- 解决Win7下打不开chm文件的方法
win7 无法打开chm操作如下:1,在命令行运行regsvr32 itss.dll2,在命令行运行regsvr32 hhctrl.ocx
- 意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提交的javascript代码! 不敢藏私,特与大家分
最近研发BDC 云开发部署平台的数据路由及服务管理器意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提 ...
- 中文版Windows Server 2012 R2更改为英文显示语言
1. 下载Windows Server 2012 R2多语言包(下载页面,直接下载链接). 2. 将win_svr_2012_r2_64bit_multi_language_lp_oem.img解压或 ...