informatica-etl全量增量设计流程

  • 在数仓ODS层创建目标表

例:

若源表为test01

目标表在172.16.0.133/oratest    ods_wshh/wshh@2015的格式:

  • 创建全量覆盖工作流
  1. 在sourcetarget目录导入工作流所需要的源和目标并保存

   01导入源:

   

02导入目标:

03保存 Ctrl + s

  1. 打开项目ODS_MOQ文件夹,用拖拽的方式建立源和目标表的快捷方式

01创建源的快捷方式

02创建目标的快捷方式同上;

也可以批量拖入创建快捷方式

  1. 创建工作流所需要的map

01根据格式创建map名称

02拖拽组件

03根据需要过滤数据或修改日期

04将字段全部拖入表达式,选择第一个字段,按shift点最后一个全选所有字段,拖入表达式;

05添加表达式f(x)增加字段ETL_INSERT_TIME、ETL_UPDATE_TIME

06修改新增字段名称和类型,修改新增加字段的变量值,SESSSTARTTIME是infa系统时间变量;

07选空白处,右键点击自动连接

08保存map;

  1. 创建可重用的session,并编辑map的源和目标

01在task developer创建可重用session,并重命名

02编辑可重用session,确定源数据库和owner

03确定目标数据库和覆盖目标表的方式

04保存session;

  1. 创建工作流,并保存

01创建工作流,选择集成服务

02拖拽可重用session,连接

03保存工作流

  1. 创建计划程序

01新建计划程序

02确定计划名称

03确定计划规则

04保存计划

05编辑工作流应用计划

06保存工作流

  1. 运行工作流并监控

  • 创建增量工作流
  1. 安装时间戳增量抽取,Treat source rows as更新插入

01创建map:M_T_ODS_FOC_T1

02设置map的变量,变量精度29;

03增加f(x)组件,

04编辑f(x)用于增加字段和设置变量为 :

SETVARIABLE($$VDATE,TO_CHAR(SESSSTARTTIME,'yyyy/mm/dd hh24:mi:ss'))

05编辑Source qualifier,按时间戳抽取

06自动连接f(x)与目标表,保存map;

 

07创建session,用Treat source rows as 模式更新插入抽取的数据

 08编辑session属性,Treat source rows as选择update模式

编辑session的映射,源

编辑session的映射,目标

创建工作流并保存

已经验证,挺好用

  1. 安装时间戳增量抽取,update和lookup更新插入

01创建map:M_T_ODS_FOC_T1_UPDATE

02设置map的变量,变量精度29;

03增加f(x)组件,

04编辑f(x)用于增加字段和设置变量为 :

SETVARIABLE($$VDATE,TO_CHAR(SESSSTARTTIME,'yyyy/mm/dd hh24:mi:ss'))

05编辑Source qualifier,按时间戳抽取

06添加lookup组件,查询目标表,编辑端口,选择目标表主键

07将f(x)主键端口连接lookup组件,并重命名TID_IN,并编辑lookup关联条件和cache lookup

08添加update组件,并将lookup和f(x)组件输出端口连接到update组件

09编辑update组件属性,确定更新规则

10连接update与目标表,TID_IN与目标主键连接,保存map;

 

07创建session,用Treat source rows as 模式更新插入抽取的数据

 08编辑session属性,Treat source rows as选择Data driven模式

编辑session的映射,源

编辑session的映射,目标

创建工作流并保存

已经验证

  1. 安装时间戳增量抽取,ETL_INSERT_TIME不变

06添加lookup组件,查询目标表,编辑端口,选择目标表主键

 

07将f(x)端口连接lookup组件,并编辑lookup关联条件和cache lookup

 

08添加f(x)组件,将lookup组件所用到的端口连接

编辑f(x)ETL_INSERT_TIME字段,确定是否更新,如果tid是空,该行为插入

08添加update组件,并将f(x)和update组件连接

09编辑update组件属性,确定更新规则

10连接update与目标表,TID_IN与目标主键连接,保存map;

 

 

  • Infa update机制详解

Informatica 作为ETL工具,Update是其很重要的一个特性。也正因为如此,我们会发现在Informatica工具的很多地方都会有Update的相关设置,许多时候给大家都造成了很大的迷惑,不知道谁先谁后,谁的优先级高,或者具体的作用是什么,希望能借此文给大家一个清晰的概念。

 

Informatica 的Update过程简单说,就是给每条数据设置一个Delete,Insert,Update或者Reject的标志的过程,我们统称为设置更新标志位的过程,最终调度程序将根据标志位来进行具体的更新操作执行。以下根据标志的设置顺序进行详细说明。

1.Init

对于任何一个Mapping的每一条数据, 初始默认标志为Insert。即在整个过程中,如果没有任何更改标志位的操作,这条数据将作Insert操作。

2.在Mapping中使用了Update Strategy

 

当在Mapping中使用了Update Strategy时,则根据DD_UPDATE,

DD_INSERT, DD_DELETE等可以将更新标志位的值由Insert更改为Update,Insert,Delete等。

3.Treat Source Rows As

        在Session属性设置里,通过设置Treat Source Rows As 的值,可以再一次对标志位进行更新,也就是说无论Mapping里设置了何种更新标志,在此,又可以进行一次更改。如果选择了Insert,Update, Delete三种方式,则无论在Mapping中如何修改更新标志位,在此将统一全部更改为Insert,Update,Delete。选择Data Driven时,系统将不对标志位做任何修改,维持原来的标志位值。

4.Target Properties

最后一个对更新产生影响的地方,即是Target的属性设置。

 

    Target load type:(载入模式)

    Normal:对于有主键或约束的目标表进行逐个载入

    bluk:对于没有主键或约束的目标表进行批量载入

    session目标表map操作复选框(对于没有勾选标记的操作,工作流遇到时不做任何操作)

    Insert:对于所有被标记为Insert的数据,进行Insert操作。

    Update as Update : 对于所有被标记为Update的数据,进行Update操作。

    Update as Insert:  对于所有被标记为Update的数据,全部进行Insert操作,不做Update操作。

    Update else Insert:对于所有被标记为Update的数据,先做Update操作,然后对没有Update成功的数据,再进行Insert操作。

    Delete:对于所有被标记为Delete的数据,进行Delete操作。

    Truncate target table option:在插入目标表前先truncate清空目标表。

     它的最初默认设置即是图中所示,Insert, Update as Update, Delete三个选项被选中。这儿就是我们所说的最终调度执行的依据。默认的3个选中选项,表明当Session运行的时候,碰到Insert标志的,即做Insert操作, 碰到Update标志的即做Update操作,碰到Delete标志的就做Delete操作。当然, 我们可以把钩取消掉,这样Informatica运行时,碰到相应标志的数据,将不做任何操作。例如,把Insert的钩取消掉,那Session运行过程中,将对所有标记为Insert的数据不做任何操作。

 

     这儿需要特别解释的便是Update的方式,它具有三种方式可以选择。在此将对这3种方式,做一个详细的说明。

     首先,需要特别说明的是,这3种方式是互斥的,即同时只能选中一个。

    Update as Update : 对于所有被标记为Update的数据,进行Update操作

    Update as Insert:  对于所有被标记为Update的数据,全部进行Insert操作,不做Update操作

    Update else Insert:对于所有被标记为Update的数据,先做Update操作, 然后对没有Update成功的数据,再进行Insert操作。

 

例如:

         假设这3条数据在前面所述步骤中被设置为Update标志, 而我们的Target Properties设置为Update Else Insert,此时的Informatica将如何运行呢。

数据1,2,3将首先进行Update操作,而1,2根据主键找到了相应的数据进行Update,而3则没有找到,Update失败,然后对于3, Informatica将采取Insert方式进行操作,最终结果便是

最后我们可以用一个图来说明Informatica整个更新的过程:

 

 

在初始化时,我们的更新标志都被默认设为Insert,而其中第二和第三步都可以对标志位进行更改,也就是说前面的所有3个步骤就是一个标志位的设置过程。

最后一步,则是具体的执行操作。根据设置的不同,执行的过程会采取几种不同的方式执行

 

 

你可能感兴趣的:(ETL)