ETL 数据加载及增量策略 本文所提到的数据加载策略为OLTP 系统作为源系统,并进行ETL 数据加载到OLAP 系统中所采用的一般数据加载策略。 根据该方式的特定性,此时ETL 数据加载一般存在以下四种方案: 一、 时戳方式 需要在OLTP 系统中业务表中统一添加时间字段作为时戳(如表中已有相应的时间字段,可以不必添加),每当OLTP 系统中更新修改业务数据时,同时修改时戳字段值。当作ETL加载时,通过系统时间与时戳字段的比较来决定进行何种数据抽取。 优点:ETL 系统设计清晰,源数据抽取相对清楚简单,速度快。可以实现数据的递增加载。 缺点:时戳维护需要由OLTP 系统完成,需要修改原OLTP 系统中业务表结构;且所有添加时戳的表,在业务系统中,数据发生变化时,同时更新时戳字段,需要对原OLTP 系统业务操作程序作修改,工作量大,改动面大,风险大。 Informatica8 具体做法: 一个原表:主键为:MON 和 KINDID 一个目标表:主键为:KINDID 一个mapping 为 m_Source_Have_TimetStamp: 具体展开为: FILTRANS 组件最关键: 过滤条件是:时间戳字段等于系统时间,或者时间戳字段等于ETL 的时间, 或者时间戳字段等于指定的数据。 Look up 组件查找是目标表,匹配条件是: update 组建最关键: 代码是: iif( isnull(DISTRICTNUM_Tgt),dd_insert, iif((DISTRICTNUM_Tgt != DISTRICTNUM_Src or DISTRICTNAME_Tgt != DISTRICTNAME_Src ), dd_update,dd_reject ) ) 二、 日志表方式 在 OLTP 系统中添加系统日志表,当业务数据发生变化时,更新维护日志表内容,当作ETL 加载时,通过读日志表数据决定加载那些数据及如何加载。 优点:不需要修改OLTP 表结构,源数据抽取清楚,速度较快。可以实现数据的递增加载。 缺点:日志表维护需要由OLTP 系统完成,需要对OLTP 系统业务操作程序作修改,记录日志信息。日志表维护较为麻烦,对原有系统有较大影响。工作量较大,改动较大。有一定风险。 Informatica8 具体做法: 一个原表:主键为:ID 一个目标表:主键为:ID 在 OLTP 系统中建设一个触发器: 触发器记录的是增加和修改和删除业务数据的时间和操作类型。 代码为: create or replace trigger a_log_trigger before update or insert or delete on a for each row declare optype char(1); id varchar2(10); begin id := :new.id; if updating th...