ODI增量记录历史轨迹数据

处理思路:


记录有效段的数据,分为3种情况


  1. Insert.
    insert时,将beg_time设置为sysdate.
  2. Update.
    Update时,首先只将目标中的end_time变为sysdate.然后,Insert一条与源相同的数据,beg_time为sysdate.
  3. Delete.
    Delete时,在ODI中不做delete操作,将end_time变为sysdate即可.

编辑KM:

1.KM   
    LKM选择LKM SQL TO SQL,IKM选择IKM Oracle 
2.将beg_time打上UD1,end_time分别打上UD1,UD2的标记.与主键相同的字段打上关键字.
3.修改IKM
   1).做Insert时,修改Insert new rows步骤,将打上了UD1标记的字段变为sysdate,将where条件换成IND_UPDATE='I' or IND_UPDATE = 'U',如图:
ODI增量记录历史轨迹数据_第1张图片
   2).Update分为两步:先Update(在目标中将上次的有效数据中的end_time设为当前时间),在Insert(将新的有效数据同步过来,在Insert new rows中已经做完).
     在步骤Update existing rows中只修改标记为UD2的字段,即end_time字段.同时,将修改条件改IND_UPDATE为'U'和'D',UD2字段为null(一条数据修改多次,只有在为null的才是有效区间的字段,所以加上null判断).
ODI增量记录历史轨迹数据_第2张图片
    3).Delete同样分为两步,Delete不做Delete操作,做Update操作,将end_time设为sysdate即可(在Update existing rows中已然完成).而不做Delete操作,在IKM的属性监察器中将SYNC_JRN_DELETE设为假,同时在IKM的详细资料中将步骤Remove deleted rows from flow table移至Update existing rows后面,或者在IKM中新建选项关联Remove deleted rows from flow table将选项设为假.
ODI增量记录历史轨迹数据_第3张图片          


你可能感兴趣的:(增量,ODI,记录历史数据,ODI记录历史轨迹数据)