cube增量更新

                                            Cube增量更新

1.建表:

-- 用户表

create table zuserinfo

(

zid int null,

zname varchar(50) null,

zpid int null

)

-- 订单表

create table zorderinfo

(

zid int null,

zuid int null,

zproductname varchar(50) null,

cdate date null

)

-- 增量表

create table zAddinfo

(

zid int null,

zuid int null,

zproductname varchar(50) null,

cdate date null

)

-- 注:增量表和订单表 表结构一样

用户表:zuserinfo

zid

zname

zpid

1

admin

null

2

robay

1

3

emmy

2

4

roem

2

订单表:zorderinfo

zid

zuid

zproductname

cdate

1

1

AAA

2011-01-05

2

1

BBB

2011-01-05

3

2

AAA

2010-01-06

增量表:zAddinfo

zid

zuid

zproductname

cdate

1

1

AAA

2011-01-05

2

1

BBB

2011-01-05

3

2

AAA

2010-01-06

2.ssas

数据源   数据视图  cube 维度

视图建关系时,订单表,增量表都和用户表的ID有关联,但是cube不会出现增量表哦。

3.oracle的存储过程

create procedure zaddinfoproc

as

cursor addcursor is

-- 这里需要注意:如果查询当天的数据,会重复插入,所以最好查询前天以前的数据更新cube。

  select * from zorderinfo where to_char(cdate,'yyyy-mm-dd')=to_char(sysdate-1,'yyyy-mm-dd');

  begin

       for addtable in addcursor loop

         insert into zAddinfo(zid,zuid,zproductname,cdate) values(addtable.zid,addtable.zuid,addtable.zproductname,addtable.cdate);

         commit;

       end loop; 

end zaddinfoproc;

4.建立oraclejob

每天定时的把 订单表中的数据 插入到 增量表中。

--每天的 10:40 执行

-- Trunc(Sysdate+1) + (10*60+40)/24*60

-- 删除数据-不会加入日志  (delete会加入日志)

truncate table zuserinfo

5.建立ssis

拖一个处理任务proces task

(先中要增量更新的cube名称,处理选项下点处理增量,设置下点配置,度量值和分区选成你要处理增量的cube,在源数据源和视图,表架构和名称 选你的事实表和增量表);

在拖一个执行sql语句 (专门用来 删除增量表的数据的)。

在项目文件夹中找到这个.dtsx文件,右键 编辑,文件 副本另存为,文件为 sql server  的文件。如果布署报错dtx:password,就把另存为时的一个选项  保护级别 :依靠服务器和存储角色 的最后一个选项。最后连上线点执行包,测试一下是否通过啦....

6.sqlserver中添加一个job。用来定时更新cube的数据。

 

大家可以参考博客园的:

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

 

 

 增量更新有一个缺点:

举个例子:cube存的是 2008年-2011年 的业务数据,有一天,客户说 2009年1月1号的一笔业务数据有误,把源表的数据改掉了。

         那么cube如何去更新2009年1月1号这一天的数据呢?

  增量更新的方式肯定不行了,在这里,要更新cube的数据,

1.只能过过全量的方式处理

2.在增量更新某一个事实表的下一步多加一个处理全表的动作。具体的步聚目前不知道如何实现。

 

so,出现这种问题时,如果没有一个好的方法处理的时候,就需要我们的经理或者相关负责人和客户 讲清 :

     历史数据出现问题如何处理。要提前沟通好。

原文地址:https://www.cnblogs.com/emmy/p/1929547.html