浑水~摸鱼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

     公司A君走后,丢下一堆烂摊子,三天两头出错,偶尔还死机。鉴于公司当前没有其他人懂微软BI相关知识的。于是把我这个进公司后跟A君学了点儿BI皮毛的人给抓过去处理。不看不知道,一看确实吓一跳。以当前的设计,我们每天这台服务器要处理N个仓库的大约40-50亿数据。作业最长的要跑16个小时以上。其它少则1-2个小时,多则十几个小时,服务器24G的内存,每天都占了98%以上。这也难怪用报表的人每天喊,数据慢,太慢。。我擦,这样搞不慢才怪呢。

    由于刚开始我这边有任务在身,我也只是修修补补,没有真正去优化。后来我那边的任务Over后我就开始着手优化了。

    首先我看到的就是以前A君对Cube的更新竟然用的是全部更新,Oh,这个的话每天就要把从去年8月份建库以来的所有数据都要处理一遍,这就是关键。。我们最大的一个库大约有12亿数据,处理一遍要十几个小时。

    于是我就开始狂搜索关于Cube增量更新的文章,我晕,那叫一个少啊,为什么资料这么少呢???最后终于找到一篇有用的。还是咱博客园的,太感谢这位哥们儿了原文章地址如下:

    http://www.cnblogs.com/aspnetx/archive/2009/09/24/1573513.html

   刚开始也不知道是我懂的太少,还是这哥们儿写的不太详细,我就是搞了半天也没实现出来,对一些专业术语啊,什么的都没搞懂。经过一天的补关于BI方面的知识,以及对此文章的研究,终于TMD搞出来了。。。下面我说下过程

    增量处理多维数据集的关键是要将事实数据分为两部分处理,一个是增量事实表,一个是历史事实表,多维数据集第一次处理历史事实表中的数据,以后每次周期性的处理都是处理增量表中的数据。

    增量事实表:存放我们需要增加到历史表中的数据。比如以我这边为例,每天凌晨需要把前一天数据给处理掉,那前一天需要处理的数据就放在这个表中

    历史事实表:就是我们每天的数据都存放在这儿。比如以我这边为例,此表存储了去年仓库上线以来的每一天的数据,大约12亿数据

   有些朋友反映 找不到增量处理这个东东,其实上只有我们第一次全部处理后,这个东东才会在下拉框中出现的。

  下面开始设置增量处理方式SSIS流程:

   

第一个流程当然还是处理一下我们的维度,这个无论是全部更新还是增量都需要处理的。不详细说明了

第二个流程就是处理我们的Cube,这个才是重点,看图。

点添加后:

 

对象名称其实就是我们的度量,这里允许我们给不同的度量用不同的处理方式处理,可以全部,也可以增量。在处理选项中选择处理增量,这时候设置里面会出现

配置。。选项,我们点进去,如下图:

 

  度量值组和分区是一样的,是系统自动出来的,不用填写,

  表和查询则是定位你要增量更新的数据。

  如果你的增量事实表中数据是单一的,就是为本度量值准备的,那你可以选择表,然后根据数据源找到增量事实表,点确定就OK了

  如果增量事实表中数据也存在其它度量值的数据,那我们就只能用查询了,写sql语句加where条件获取对应度量的增量数据,我这边是按照城市分的,所以条件加 个城市名就ok了,

 如此这样为每个度量增加增量配置,所有配置Over就行了

 最后一步是清空增量事实表。按照我参考的那位仁兄的流程是还有一步要把数据最终导到历史事实表中的。我这边在之前的存储过程中已经做过了,所此处就不用再次插入历史事实表了。

 如此这般处理完成后,果然效果很明显,由原先的十几个小时处理过程变为1小时以内了。

 还有十个仓库要这么处理。。晕啊,,慢慢处理吧。。

posted on 2011-05-10 16:47  断鱼  阅读(807)  评论(1编辑  收藏  举报