Hyperion essbase入门(四)计算

转自:http://hi.baidu.com/sheenshine/item/0343cfbdf7e7f6a1ebba93d6

MOLAP的设计强于关系数据库或者ROLAP的地方就是MOLAP的设计可以按照预先指定的方式把结果欲先汇集计算出来(或者提供了很容易的实时汇总的方法)从而提高了分析的时候所需要的快速的响应速度!

如果大家熟悉Oracle的物化视图,就能够很容易理解为什么这种方式能够提供快速计算的能力。因为所有维度都是按照层次关系组织起来的:
比如对于区域维度而言,很显然全国的销售额一定是各个省的销售额的总和,而各个省的销售额一定是下面各地市销售额的总和,这种天然的汇总关系为实现这种按层次的汇总提供可能性,因为我们通过MOLAP可以很容易计算出各个层次的累计数值,这样做查询的时候就能够很快地把所需要的数值拿出来(不管你要的是哪一级的汇总)

从这种角度来说,使用Oracle关系数据库来模拟多维数据库是可能的,只要你建立足够多的物化视图,在每一个层次都提供汇总计算,当然这个是理论上的,真正这么去实现在很多应用里根本就不现实,事实上,我一直在想,物化视图的技术是不是就是受MOLAP数据库的启发产生出来的呢?

理解Essbase计算

多维数据库里的数据有些是从源数据导入的,有些则是运算出来的,比如对于一个最小时间单位为天的分析销售量的立方体,每天的销售量都是从源系统导入到Essbase里的,但是对于每个月的销售量,则是由Essbase根据更加细粒度的数据计算出来的,所以立方体里的数据在这种区别下可以分为两大类数据,一类是从源系统导入的,另一类则是Essbase运算出来的,一般而言输入数据都是level 0数据(最低端的叶子)。

由Essbase根据导入的数据再计算生成我们所需要的别的数据的过程称之为calculation,Calculation也分为两种:
第一种方式是按照outline层次预先设定的方式进行叠加(Consolidation operator)。
第二种方式是使用自己写的计算公式进行计算(member formula)。

我们通过以下的例子来说明第一种的计算方式,在outline的设计的时候,一个必须指定的属性就是所谓的指定层次间的汇总关系(Consolidation operator),缺省的汇总关系总是相加,如下图:

hyperion3-3.jpg计算按照成员出现的次序进行,上图的设计含义是Qtr1成员的值是前三个月的总和(注意成员后面括号里的+号)即:

Qtr1=Jan+Feb+Mar

请注意+号不是唯一能够使用的符号,还可以有-(减),*(乘),/(除),%(百分比)等,比较特殊的是~(排除,意即该成员不参与到运算里),这种计算的设计里最重要的是同一层次的成员出现的顺序,因为同一层次的计算顺序是按照出现的顺序来进行,而不是按照通常的运算符号本来的优先次序。
这种基于consolidation操作符进行运算的关系也是推荐的运算方式,因为这种方式可以提供更好的性能,而且对于使用者而言更加直观和容易理解。

Outline里另一种计算是使用成员公式(member formula)来进行,有时候当成员并不是按所想要的次序出现的时候,就需要使用公式去表现成员的关系去计算一个所需要的值,使用这种自定义的计算公式能够描述更加复杂的计算关系,essbase提供了逻辑测试关系符(if else),各种统计和财务函数来方便计算。

维度计算的优先次序是先计算account维度的值,其次是时间维度的值,然后是计算其他稠密维度上的值,最后再计算稀疏维度上的值。而计算two pass的值则是在其他所有计算都完成之后。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值