重磅经验分享--针对CUBE建模设计思路深度总结

本资料无预览

如感兴趣请 1 金币购买后下载

立即下载

资料简介:
最近经常有人CUBE模型的设计,CUBE的按时间分区问题,把以前的资料整理总结一下,希望给大家参考:

一、CUBE按时间分区基本原理:
1、事实表应该有个月份的字段,并且加上索引,这样在过滤一个月的数据时,查询效率很高;
2、新建一张参数表,可以只有一个月份字段,一条记录,记录当前月份;
3、写一个视图。事实表跟参数表关联,关联字段是月份字段,这样没错跑批就是那指定月份的数据;
4、建立CUBE模型,数据源引入事实表视图,设定分区模式为按月分组;
5、当然分组还可以按年,日等形式,取决与自己的设计;
6、不管是按那个时间粒度分组,CUBE的跑批还是每天跑,只是如果按月分组,每月1号最快,生产的CUEB文件最小,月底最慢,生产的CUEB文件最大;
7、分组跑批最主要解决的是效率问题;
8、写一跑批脚本,更新参数表月份值,调用CUBE跑批;
9、把跑批脚本加入计划任务,每天执行。
10、不管是全量、还是增量按日期分组的方式跑批,每次重新跑批都是重新生产mdc文件的过程;
二、CUBE分区优势
1、最主要的还是觉得效率问题,按时间分区其实就是把一个CUBE分解成很多小CUBE,每次生产指定数据的文件,读数据也少,写cube文件也小,效率当然高;
2、解决CUBE上一些限制,之前看过cognos的官方文档,当个CUBE文件的大小被限制到4G还是8G有点记不清了(这个当然要限制了),否则文件太大,读数据也慢,写文件也慢,曾经在一个客户那三年的数据,上亿条记录,生产一个CUBE文件,4G左右,跑了十几个小时,这样的效率显然不行;后来改成按月分区,每个月份的CUBE文件只有800MB左右,在盘阵跑一次只需要40分钟。
3、由于按照分区会有一个VCD的文本文件,相关一个小CUBE的索引,你可以通过编辑这个文件,挂接指定日期范围的数据;

三、CUBE分区存在的问题
1、首先是分区的模式、原来觉得存在的问题,没跑一个cube就相对书中的一页纸被翻过去了,这个小CUBE中记录了当时跑批的维度和度量,如果后期维度数据发生变化(如机构是分层次了,原来A机构挂在C下面,后来调整了挂在B下面了),后期跑的小CUBE文件是按照新的机构结果跑的,就会导致在RS、AS中看到的数据源部分,机构维度的树有问题,会出现错乱。但是只是显示上错乱,针对每个机构维度上的度量值还是正确的。
2、解决上面的问题必须重新把所有的CUBE文件跑一次。按照IBM的官方说法,COGNOS是一个enterprise solution,确实存在这样的问题,只有重新全跑才能解决显示上的问题;

四、上几个截图,给大家参考:
1、按月份分区跑完CUBE的情况,分别是VCD文件的内容、小MDC文件列表、主目录。

2013-09-06_223330.png


2、按日分区跑完CUBE的情况,分别是VCD文件的内容、小MDC文件列表、主目录。

3、针对机构维度调整了,分区cube跑批出现的显示错乱的情况

必须重新跑批所有CUBE显示出最新的机构,正确的机构层次。

挑战赛.jpg



五、附加一个完整的全量的CUBE设计文档,涵盖了维度、度量的设计、FM的发包、TRANSFORMER建模过程及注意事项。


六、跑批脚本及说明:

Cube_zz.sh:总的调度文件,根据CubeDate.TXT文件的记录数进行循环调度,同时生成update_cube_state.sql文件的更新数据库标志位的语句;
CubeDate.txt:记录日期值,一般由JAVA程序或者自己手动写入,记录跑批的数据日期;
update_cube_state.sh:调用update_cube_state.sql文件,进行数据库表值更新的语句;
Run_Cube.sh:CUBE跑批的脚本,首先把CUBE跑批到create_cube目录下,当跑批完成后,再把相关文件COPY到cube数据源自定的文件中;
2013-09-06
浏览1553
下载129

已下载用户的评价7.94分

您还未下载该资料,不能发表评价;
查看我的 待评价资源
Prima Prima 软件开发工程师 上海 2017-06-15
有用
学习中。多谢楼主分享。
lycoris lycoris 其它 中科软 2016-09-21
有用
有用 谢谢分享

贡献者

sealink 技术总监,sealink.com
1 金币 收藏 立即下载
X社区推广