历史拉链表混乱日期跑批的个别数据重跑方案

--接文:《仓库拉链算法的数据恢复机制(重跑中间任意一天保证数据的准确完整性) 》;参考博文地址:http://blog.csdn.net/nsj820/article/details/6096682
本文是在《仓库拉链算法的数据恢复机制(重跑中间任意一天保证数据的准确完整性) 》基础上,对仓库拉链算法的进一步思考;描述了历史拉链表个别数据需要重跑的解决方案。
思考:原文曾说还未考虑用此种方法进行增量数据的拉链处理,现在思考了一下这并不具有可行性;其实此文中所述可以理解为增量处理方式的一种,可以按此文再作些扩充;但因增量源数据传输而产生的拉链断链问题并不能很好的解决,除非设定断链数据跟其前一非空链值相同;但这理解和解释起来好像又不是很通。
1、存储过程P_T100_STATUS_H_one_update代码

create or replace procedure P_T100_STATUS_H_one_update(
 P_ETLDATE     in     VARCHAR2,    --日期参数
 P_KEY         in     VARCHAR2,    --主键数据
 O_RUNSTATUS   out    NUMBER,      --执行结果
 O_MSG         out    VARCHAR2)    --错误返回
 is
 --定义存储过程信息
 V_PROC_NAME       VARCHAR2(50)   := 'P_T100_STATUS_H';
 V_TABLE_NAME      VARCHAR2(50)   := 'EDW_T100_STATUS_H';
 V_START_TIMESTAMP TIMESTAMP;                --加载开始时间
 V_END_TIMESTAMP   TIMESTAMP;                --加载结束时间
 V_RECORD_NUMBER   INTEGER;                  --记录数
 V_KEY             VARCHAR2(100)  := P_KEY;
 --定义错误代码,错误状态
 V_SQLERRM         VARCHAR2(1000);           --异常信息
 V_ERR_SQL         VARCHAR2(1000);           --出错位置
  BEGIN
    --捕获过程开始时间
    SELECT SYSDATE INTO V_START_TIMESTAMP FROM DUAL;
   /***************************************************************************************************/
   /******************                        数据分链处理                       **********************/
   /***************************************************************************************************/
    --1、处理目标中结束日期为P_ETLDATE和开始日期为P_ETLDATE+1的数据
    --(1)、转移目标表中结束日期为P_ETLDATE的数据到TMP_T100_STATUS_H_PRE之前表中
    V_ERR_SQL:='转移目标表中结束日期为P_ETLDATE的数据到之前表中';
    INSERT INTO TMP_T100_STATUS_H_PRE
            (Id               --ID
            ,Status           --状态
            ,Start_Date       --开始日期
            ,End_Date         --结束日期
            )
    SELECT  Id
            ,Status
            ,Start_Date
            ,End_Date
    FROM    EDW_T100_STATUS_H
    WHERE   End_Date = TO_DATE
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值