维度表更新方法 - 增量更新

维度表更新方法- 增量更新总结:



/******批量导入,从source表到stage target表,赋相应标识位:目的是找出新增加的和经过修改的记录******/
begin
    merge into emp_t t
    using (select * from emp_s) s
    on ( t.empid=s.empid
         and t.modify_time=s.modify_time)
    when matched then
      update set t.action_flag='0'
    when not matched then
      insert  (empid,empnm,deptnm,create_time,modify_time,action_flag)
        values (s.empid, s.empnm, s.deptnm, s.create_time, s.modify_time,'4' )
    ;
    commit;
end;
 
/******找出距离最近一次ETL时间以来,由源系统新增加的记录,赋标志位为2,维度表直接Insert*********/

begin
 update emp_t set action_flag='2' where create_time>(select nvl(max(create_time),to_date('01/01/2000','DD/MM/YYYY')) as createmaxtime from emp_t where action_flag='0' );
 commit;
end;


/****************找出数据仓库已经Load到的数据,但是在源系统经过修改的记录,改标志位为1,维度表需要更新或者生成新版本;
                  改原有记录的标志位为0,出错改标志位为5,0和5的记录不经过ETL到数据仓库*********/
begin
    
 merge into emp_t t
 using ( select empid,action_flag,empnm,deptnm,create_time,modify_time,rnk from(
          select empid,action_flag,empnm,deptnm,create_time,modify_time,rank() over(partition by empid order by modify_time desc) as rnk
          from emp_t where empid in  ( select empid from emp_t where action_flag='4' )) s_tmp where rnk='1') s
 on (t.empid=s.empid
 and t.modify_time=s.modify_time)
 when matched then
    update set t.action_flag='1'
 when not matched then
     insert  (empid,empnm,deptnm,create_time,modify_time,action_flag)
        values (s.empid, s.empnm, s.deptnm, s.create_time, s.modify_time,'5' );
 commit;
    
 merge into emp_t t
 using ( select empid,action_flag,empnm,deptnm,create_time,modify_time,rnk from(
          select empid,action_flag,empnm,deptnm,create_time,modify_time,rank() over(partition by empid order by modify_time desc) as rnk
          from emp_t where empid in  ( select empid from emp_t where action_flag='4' )) s_tmp where rnk='2') s
 on (t.empid=s.empid
 and t.modify_time=s.modify_time)
 when matched then
    update set t.action_flag='0'
 when not matched then
     insert  (empid,empnm,deptnm,create_time,modify_time,action_flag)
        values (s.empid, s.empnm, s.deptnm, s.create_time, s.modify_time,'5' );
 commit;
end;


 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要想在百度八亿网页的数据海洋中找到你所要的信息, 人工方式需要1200 多人年,而百度搜索技术不到1 秒钟。人 们被数据淹没,却渴望知识。商务智能技术已成为当今企业 获取竞争优势的源泉之一。商务智能通常被理解为将企业中 现有的数据转化为知识,帮助企业做出明智决策的IT工具集。 其中数据仓库、OLAP和数据挖掘技术是商务智能的重要组成 部分。商务智能的关键在于如何从众多来自不同企业运作系 统的数据中,提取有用数据,进行清理以保证数据的正确性, 然后经过抽取、转换、装载合并到一个企业级的数据仓库里, 从而得到企业数据的一个全局视图,并在此基础上利用适当 的查询分析、数据挖掘、OLAP等技术工具对其进行分析处理, 最终将知识呈现给管理者,为管理者的决策过程提供支持。 可见,数据仓库技术是商业智能系统的基础,在智能系统开 发过程中,星型模式设计又是数据仓库设计的基本概念之一。 星型模式是由位于中央的事实表和环绕在四周的维度表 组成的,事实表中的每一行与每个维度表的多行建立关系, 查询结果是通过将一个或者多个维度表与事实表结合之后产 生的,因此每一个维度表和事实表都有一个“一对多”的连 接关系,维度表的主键是事实表中的外键。随着企业交易量 的越来越多,星型模式中的事实表数据记录行数会不断增加, 而且交易数据一旦生成历史是不能改变的,即便不得不变动, 如对发现以前的错误数字做修改,这些修改后的数据也会作 为一行新纪录添加到事实表中。与事实表总是不断增加记录 的行数不同,维度表的变化不仅是增加记录的行数,而且据 需求不同维度表属性本身也会发生变化。本文着重讨论数据 仓库维度表的变化类型及其更新技术。
数据仓库中,位置维度表是用来记录与位置相关的属性的表。它可以包含各种与位置有关的信息,如国家、省份、城市、街道等。位置维度表的设计可以根据具体的业务需求来确定需要包含哪些属性。 在实际应用中,位置维度表可以用于分析和决策,比如根据不同地理位置的销售数据进行区域分析、市场定位等。它可以与事实表进行关联,通过事实表中的度量值来分析不同位置的业务指标。 在维度表的存储周期方面,一般来说,越长越好,因为数据仓库需要存储历史数据。但在实践中,需要根据业务需求进行取舍,避免数据冗余和成本过高的问题。可以通过增量更新或缓慢变化维的方式来处理维度表的变化,同时根据业务需求及时清理或归档陈旧的历史数据。 综上所述,位置维度表数据仓库中扮演着重要的角色,可以用于记录与位置相关的属性,并与事实表进行关联分析。在设计和存储周期方面需要根据具体业务需求进行合理的处理。\[1\]\[3\] #### 引用[.reference_title] - *1* *2* [数据仓库维度表与事实表](https://blog.csdn.net/weixin_39041625/article/details/105202544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [数据仓库维度建模-维度表设计](https://blog.csdn.net/weixin_39825854/article/details/112021744)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值