Hyperion Essbase Calculation Optimizing

相对于与关系型数据库(比如Oracle)来说,提高和调整Essbase性能的武器确实不多。因为Essbase本身的特点,一个简单的语句往往操纵的数据量往往是SQL语句所不能比较的;其中往往是很小的一点改变,就会对数据库的性能就有很大的影响,因此调优Essbase比Oracle数据库的性能调整更富有挑战,下面只能列出一些性能调整的Tips,还需要不断的提高:

1. 控制数据块的大小和数据块的密度,合适的Block size 应该在8到100K之间,我们可以通过调整Dense和Sparse维度的配置控制数据块的大小,同时保证很好的块数据密度。
2. 排列Outline中Dimension的结构:Dense Dimension应该在Sparse Dimension的前面,Sparse Dimension的排序方式应该是:按照member的数量从少到多。在ESSCMD中使用GETDBSTATS命令可以很方面查询数据库维度的统计数据:下面是ESSCMD返回的结果实例:
-------Statistics of test:test-------

Dimension Name Type Declared Size Actual Size
===================================================================
Accounts DENSE 131 94
Time Periods DENSE 23 14
Data Type DENSE 6 5
Entities SPARSE 2460 1279
Object SPARSE 268 265
Years SPARSE 7 7
Scenarios SPARSE 10 10
Versions SPARSE 11 11
Currencies SPARSE 8 8
Market SPARSE 12 12
HSP_Rates SPARSE 20 20
Entity-Attr SPARSE 9 9
Function SPARSE 9 9
User Category SPARSE 3 3
Prod Group SPARSE 8 8
Product/Svc SPARSE 4 4
Sub-Function SPARSE 61 61
Product Group SPARSE 10 10

Number of dimensions : 18
Declared Block Size : 18078
Actual Block Size : 6580
Declared Maximum Blocks : 974679552000
Actual Maximum Blocks : 501081504000
Number of Non Missing Leaf Blocks : 1
Number of Non Missing Non Leaf Blocks : 71
Number of Total Blocks : 72
Index Type : B+ TREE
Average Block Density : 0.5927052
Average Sparse Density : 1.436892E-008
Block Compression Ratio : 0.02291698
Average Clustering Ratio : 0.9421046
Average Fragmentation Quotient : 50.20838

3. 增量加载数据:数据增量加载,从而可以增量的创建数据块,利用Intelligent Calculation,这样不需要每次计算所有数据块,每次只要计算新增加的数据块就可以了。
4. Flat Dimension:指那种有很多member,但是很少层次关系,Hierarchy的结构是一个很扁平的结构。这种结构对Performance有着负面的影响。对于这种结构,可以考虑增加他的层次结构,或者在calc script中增加SET CALCHASHTBL命令行利用Hash表的能力。
5. 使用并行执行,需要指出的是:1)Essbase默认的是Serial Calculation.如果需要并行执行,需要在essbase.cfg里面配置或者在calcu-script里面。 2)并不是指定了并行执行Essbase就会真的并行运算,Essbase会首先判断这个语句能否并行,如果不满足要求,Essbase还是会串行执行他。
6. 一些公式会强迫Essbase年进行串行执行,而不能进行并行执行,这些公式包括:1)对作为并行种子的维度存在依赖关系的Dense 维度上的公式。 2)含有@VAR, @ARRAY, or @XREF的公式。 3)有循环依赖关系的公式:比如A引用了B, B引用了C, C又引用了A。
7. 使用Dynamic Calcu: 动态计算项在Essbase计算的时候并不会计算,而是在访问数据的时候实时计算,同时dense dimension上一些项设置成Dynamic, 可以使数据块变小,加速计算过程。
8. 使用Essbase的consolidation(+, -, *, /)是运算效率最高的计算方式。
9. 使用Fix严格控制计算的范围为最小的需要计算的数据块。
10. 如果可能,在dense dimension上创建公式。
11. 当你使用cross-dimension在dense dimension上创建公式时,如果满足下面两个条件,Essbase将不会自动创建数据块:1)等式右边是Dense Dimension, 等式左边是Sparse Dimension,你的计算不会返回结果,同时还会变得很慢:比如下面的情况:sales 和 expense是dense 维度的成员,budget和actual是sparse维度的成员。那么可以用Datacopy先生成数据块,然后再计算:

DATACOPY Sales -> Actual TO Sales -> Budget;
DATACOPY Expenses -> Actual TO Expenses -> Budget;
FIX(Budget)
(Sales = Sales->Actual * 1.1;
Expenses = Expenses->Actual * .95 wink.gif
ENDFIX

下面这种计算将不会产生数据块和计算结果:
FIX(Budget)
(Sales = Sales -> Actual * 1.1;
Expenses = Expenses -> Actual * .95 wink.gif
ENDFIX

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7477027/viewspace-269293/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7477027/viewspace-269293/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值