zoukankan      html  css  js  c++  java
  • 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,出现这种问题时,如果没有一个好的方法处理的时候,就需要我们的经理或者相关负责人和客户 讲清 :

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

  • 相关阅读:
    鱼站追踪记
    使用sqlmap对进行php+mysql注入实战
    Python黑客——快速编写信息收集器
    Visual Studio 2015 Update 1 安装到最后 KB3022398 错误解决方法
    ACdreamoj 1011(树状数组维护字符串hash前缀和)
    iOS开发--Mac下server搭建
    2.oracle分页,找到员工表中薪水大于本部门平均薪水的员工
    Android面试题3之描写叙述下Android的系统架构
    OpenCV入门笔记(三) 图片处理
    全民Scheme(1):数字游戏
  • 原文地址:https://www.cnblogs.com/emmy/p/1929547.html
Copyright © 2011-2022 走看看