一、增量抽取:
ETL 的开发流程:
业务系统OLTP--->操作型数据存储ODS----->清洗到数据仓库EDW----->数据集市(建模/挖掘/分析)DM----->可视化。
增量抽取,表示当业务系统的数据随着时间的推移是变动的(如:客户数量的变化,会员的变化,订单的变化、网站访客的变化等都是增量数据),我们需要开发增量抽取到EDW层,保持数据的同步,不用每次都去业务系统读取全部数据,只添加或更新有变化的数据。
二、案例:
1、目标:开发增量抽取 (业务系统OLTP---> EDW )
源表 -----> 目标表
OLTP(oracle) -----> EDW [oracle(edw01)]
ods_cust_info -----> edw_cust_info 客户基本信息表
2、操作流程步骤:
(1)业务系统OLTP--->操作型数据存储ODS:导入源数据到oracle的OLTP用户下。
在oracle 数据库中创建用户OLTP,并授予相应的权限
sqlplus system/a123456@orcl
create user OLTP identified by "OLTP";
grant connect to OLTP;
grant dba to OLTP;
grant resource to OLTP;
conn oltp/oltp@orcl
@e:\oracle_oltp_data.sql;
(2)打开informatica的R端,登陆并创建文件夹BI_EDW01。
(3)切换到D端,创建连接,导入源
--做增量抽取,在使用源表和目标表之前需要为源表和目标表设置一个主键,我们在创建时设置ID 、cust_id字段为主键。
(4)创建目标表,然后生成并执行sql。
(5)创建映射,
--创建映射M_ODS_EDW_CUST_INFO,拖入源和目标,
--使用Lookup组件查找目标,增加查找条件目标id=源id,记得修改属性中查找数据的来源,
--使用更新策略,连接查找和源,修改属性更新策略。
--如果目标表存在该记录,则拒绝
--如果目标表不存记录 ,则插入
--iif(isnull(ID),dd_insert,dd_reject)
--使用更新策略组件(定义表达式)
--其中 DD_INSERT/DD_UPDATE/DD_DELETE/DD_REJECT 是 Infa 的常量,
--分别对应 0,1,2,3。上面代码的 DD_INSERT 也可以用 0 代替。
--解释:查找目标表的ID 与源表id进行匹配,如果目标表没有,源表有,增增量插入,否则拒绝。
--连接映射关系,ctrl+s保存。
(6)、创建任务,添加连接关系,修改任务映射,保存
(7)、创建工作流,连接任务,保存并执行
(8)、M端:工作流调度监控
(9)、数据库查验数据
(10)增量抽取开发功能验证。在源数据中添加两条记录,从新执行后看效果。
--如果没有数据的增量,我们再去执行,就会拒绝请求不会重复插入。
ETL之informatica专题