企业绩效管理网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1326|回复: 4

Hyperion Essbase Calculation Optimizing Tips

[复制链接]

66

主题

395

帖子

544

积分

高级会员

Rank: 4

积分
544
QQ
发表于 2014-3-11 23:50:33 | 显示全部楼层 |阅读模式
相对于与关系型数据库(比如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;)
ENDFIX

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

使用道具 举报

76

主题

377

帖子

549

积分

高级会员

Rank: 4

积分
549
QQ
发表于 2014-3-12 01:22:59 | 显示全部楼层
up!
回复 支持 反对

使用道具 举报

70

主题

390

帖子

554

积分

高级会员

Rank: 4

积分
554
QQ
发表于 2014-3-12 01:36:49 | 显示全部楼层
顶!
关于维度顺序,应该区分查询需求和计算需求,总体来讲是先Dense,后Sparse,对于查询需求,需要将经常查询的维度置于较少查询的维度之前,对于计算需求,可以将维值少的放在前面。
回复 支持 反对

使用道具 举报

81

主题

411

帖子

598

积分

高级会员

Rank: 4

积分
598
QQ
发表于 2014-3-12 01:59:41 | 显示全部楼层
这个话题如果真的钻研明白了的话,可以写出一本畅销书。
回复 支持 反对

使用道具 举报

3

主题

16

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2014-3-24 15:06:46 | 显示全部楼层
大家有什么心得,都说说啊!essbase调优 ,真是个很烦人的事情!oracle貌似也没什么官方文档!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|企业绩效管理网 ( 京ICP备14007298号   

GMT+8, 2019-1-17 19:08 , Processed in 0.163646 second(s), 11 queries , Memcache On.

Powered by Discuz! X3.1 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表