INFORMATICA 开发规范

目    录

Informatica开发规范.... 1

目    录.... 2

1        编写目的.... 4

2        ETL研发责任人界定.... 4

3        ETL 研发数据库操作约束条件.... 4

4        定义.... 4

5        范围.... 5

6        系统通用属性.... 6

7        命名规则.... 6

7.1          通用规则... 6

7.2     Connection 数据源连接... 6

7.2.1       Connection 数据连接命名... 6

7.2.2       数据库类型对应缩写... 6

7.2.3       生产数据库的SID.. 7

7.3         组件命名.... 7

7.4         Folder/mapplet/Mapping/Session/Workflow/Schedule命名.... 9

8        创建Connection连接.... 9

9        创建文件夹.... 10

9.1          创建文件夹... 10

9.2          复制共享对象... 11

10     Mapping设计.... 13

10.1        导入源和目标的表结构... 14

10.2        Mapping设计... 16

10.3        常用组件设计说明... 17

11     Workflow设计.... 19

11.1        创建Workflow.. 20

11.2        Workflow属性设置... 20

11.3        添加可复用Session “pre_sql”、“post_sql”. 22

11.4        编辑Assignment. 23

12     Session设计.... 23

12.1        创建Session.. 24

12.2        必要Session属性设置... 24

12.2.1     General属性... 24

12.2.2     Property属性... 24

12.2.3     Config Object属性... 25

12.2.4     Mapping属性... 26

12.2.4.1        Source 属性... 26

12.2.4.2        Target属性... 27

13     从中间库取数据.... 28

13.1        复制共享对象... 28

参考复制共享对象创建‘M_GetParam_Mid’的快捷方式,复制’ pre_S_MID’、’post_S_MID’ 28

13.2        Workflow设计... 28

14     开发建议.... 30

15     备份及恢复.... 30

15.1        备份... 30

15.2        恢复... 31

16     参考文档.... 31

17     常见问题解决.... 31

 

1   编写目的

本文档旨在本次项目中实施,Informatica工具所涉及到的数据连接,命名规范和工作开发规范方面的规定和指引,统一开发习惯,以便在开发过程中能起到事半功倍的效果。

2  
ETL研发运维责任人界定

1)资科内部业务数据流转,采取使用方研发原则,即谁取用数据,谁负责ETL版本研发。目标系统运维人员进行运维。

2)对于业务用户的独立管理系统,没有专门研发,由取数源端研发负责informatica
版本研发推送数据。源端系统对应运维人员负责对应workflow运维。

3  
ETL 研发数据库操作约束条件

1)对于增量同步表,需要源表和目标表存在主键。

2)增量字段上,需要有索引

3)增量字段 (如时间条件,必须严格顺序进入数据库,或者增量同步完成后,严格保证增量同步的取数范围后续不会有数据进入)


同步场景


同步要求


同步类型


源表和目标表是否存在主键或者唯一键


增量字段上是否有索引(源表和目标表)


update 同步


delte同步


有标识字段增量


存在pk或者索引


需要存在索引


需要存在updatetime字段,并使用update字段PK 进行update
更新同步。


需要将删除数据写入临时表,etl同时同步临时表后将目标库对应数据删除,源端也需要进行定期清理临时表


源表全量读取同步


不存在约束或者索引


N/A


N/A


N/A


源表全量读取同步


存在pk或者索引


N/A


N/A


N/A

4  
定义


序号


术语或缩略语


说明性定义


1


ETL


Extraction-Transformation-Loading,数据加载


2


Source



3


Target


目标


4


Transformation


组件


5


Mapping


数据映射


6


Mapplet


数据映射集,可复用的Transformation组合


7


Session


执行任务


8


Worklet


数据工作集


9


Workflow


数据工作流


10


Schedule


调度频率


11


Parameter


参数


12


ETLUser


用与ETL数据同步的数据库用户


13


ProductDatabaseSID


生产系统数据库SID

5  
范围

本文档读者包括:

l  项目经理;

l  系统管理员;

l  DBA管理员;

l  开发人员;

l  测试人员;

l  运维人员;

本项目需要使用到的技术:

l  ETL数据整合及转换:Informatica;

l  操作系统:Linux、Windows

l  数据库:Oracle、Mysql、DB2、MS
SQLServer等

6  
系统通用属性


 


Service Variable


Description



1


$PMRootDir


Infa_share根目录


<Installation_Directory>\server\infa_shared


2


$PMSessionLogDir


Session 运行日志目录


$PMRootDir/SessLogs.


3


$PMBadFileDir


Reject files拒绝文件目录


$PMRootDir/BadFiles.


4


$PMCacheDir


Temporary cache files


$PMRootDir/Cache


5


$PMTargetFileDir


Target files 目标文件生成目录


$PMRootDir/TgtFiles


6


$PMSourceFileDir


Source files 平面文件源文件目录


$PMRootDir/SrcFiles


9


$PMWorkflowLogDir


Workflow logs workflow执行日志目录


$PMRootDir/WorkflowLogs.


10


$PMLookupFileDir


Lookup files lookup生成的cache目录


$PMRootDir/LkpFiles.


11


$PMTempDir


临时文件目录


$PMRootDir/Temp


12


$PMStorageDir


HA时,记录workflow的运行状态


$PMRootDir/Storage.

7  
命名规则

7.1 通用规则

以下元素,数据库表,字段名称,函数名称,函数表达式,SQL语句均采用大写字母。

7.2 Connection 数据源连接

7.2.1       
Connection 数据连接命名

数据链接分为源数据库链接与目标数据库链接,ETL的E(抽取)与L(加载)的链接。

数据库链接方式分为Native、ODBC两种方式:

1)Native是采用相应数据的客户端连接来抽取、加载数据,比如oracle、DB2等;

2)ODBC是采用DataDirect ODBC的方式连接数据库,比如mysql、MSSQL。

数据连接的命名采用:DataBaseType_ProductDatabaseSID_ETLUSER。

说明:DataBaseType为数据源类型,ProductDatabaseSID生产数据库的SID,ETLUser为用与ETL数据同步的用户。

例如: Ora_ASURE_BILETL,连接方式为Native方式,Ora表示数据类型为Oracle,ASURE为阿修罗生产数据库SID,BILETL为ETL的操作用户。

例如:ODBC_
Mysql_ASURE_BILETL,ODBC表示采用ODBC的方式连接。Mysql为数据库类型,ASURE为阿修罗系统,BILETL为ETL操作用户。

7.2.2       
数据库类型对应缩写

表5-1 数据库类型缩写


序号


数据源类型


缩写


1


Oracle


Ora_


2


DB2


DB2_


3


Mysql


Mysql_


4


Microsoft SQL Server


MSSQL_


5


Sybase


Sybase_


6


Greenplum


GP_


7


Teradata


TD_


8


ODBC


ODBC_DataType_

7.2.3       
生产数据库的SID

表5-2 数据库信息表


序号


数据库中文名


数据库SID


备注


1


阿修罗系统


ASURE


2


新车辆管理系统


VMS


3


短信系统


SMSDB


4

7.3 组件命名

表5-3 常用组件命名前缀


序号


组件名称


图标


命名规范


含义


1


Source Qualifier

 


sq_


从数据源读取数据


2


Expression

 


exp_desc


行级转换


3


Filter

 


fil_


数据过滤


4


Sorter

 


sort_


数据排序


5


Aggregator

 


agg_


聚合


6


Joiner

 


jnr_


异构数据关接连接


7


Lookup

 


lkp_


查询连接


8


Update Strategy

 


ust_


对目标编辑 insert, update, delete, reject


9


Router

 


rot_


条件分发


10


Sequence Generator

 


sqg_


序列号生成器


11


Normalizer

 


nrm_


记录规范化


12


Rank

 


rnk_


对记录进行TOPx


13


Union

 


uni_


数据合并


14


Transaction Control

 


tc_


对装载数据按条件进行事务控制


15


Stored Procedure

 


sp_


存储过程组件


16


Custom

 


cus_


用户自定义组件


17


HTTP

 


http_


WWW组件


18


Java

 


java_


Java自编程组件

7.4  Folder/mapplet/Mapping/Session/Workflow/Schedule命名

表5-4 Folder/mapplet/Mapping/Session/Workflow命名规范


情形


名称


例如


FOLDER


公用文件夹


000_Shared


文件夹


ProductDatabaseSID_OWNER


SFOSS_
EXP5(sfoss是生产阿修罗数据库sid, exp5是我们要操作的表owner)


MAPPLET


MPL_Business Name


MPL_LRNull


MAPPING


单源单目标


M_Target Table Name


M_TT_WAYBILL


多源单目标


M_Target Table Name


M_TT_WAYBILL


单源多目标


M_1ToN_Function description


M_1ToN__Broadcost


多源多目标


M_NToN_Function description


M_NToN_Gather


SESSION


可复用post_S_


post_S_ mapping name


post_S_M_STGOMS_ORDERS


可复用pre_S_


pre_S_ mapping name


pre_S_M_STGOMS_ORDERS


单mapping单session


S_mapping name


S_M_STGOMS_ORDERS


单mapping多session


S_mapping name_区域/子系统


S_M_STGOMS_ORDERS_BJ

S_M_STGOMS_ORDERS_GX

(BJ代表北京,GX体表广西)


WORKFLOW


单mapping单session


WF_mapping name


WF_STGOMS_ORDERS


单mapping多session


WF_mapping name


WF_STGOMS_ORDERS


多mapping多session


WF_function description


WF_UpdateUsersAndGroups


Schedule


SCHDL_运行间隔_(运行时间)_(截止时间)


每5分钟运行一次,2014年5月6号过期


SCHDL_5MIN_Stop20140506


每5分钟运行一次,永不过期


SCHDL_5MIN_FOREVER


每天21:30运行,永不过期


SCHDL_1Day_AT2130_FOREVER


每月4号21:30运行,永不过期


SCHDL_1MON_4THAT2130__FOREVER

       

8     
创建Connection连接

创建Connection由Informatica管理员完成,但在开发环境和测试中开发人员有修改Connection属性的权限。

以创建Oracle Connection“Ora_ASURE_SFMAP”为例进行说明

  1. 登陆到Informatica 服务器,查看对应的SID“ASURE”是否已经添加到tnsname.ora文件中,否则在tnsname.ora中添加
  2. 登陆到Workflow ManageràConnection(连接)àRelationalàSelect
    Type = “Oracle”àNew…(按钮)

8?1 创建Connection

  1. 修改Connection连接的权限,登陆到Workflow ManageràConnection(连接)àRelationalàObjects:选择需要修改的Connection连接àPermission…(按钮)à修改属主。给Others组执行的权限。

8?2 修改Connection属主

9   创建文件夹

在创建文件夹前,需要在目标数据创建用户ETLMGR,脚本在文件夹“ETLMGR”中,请按照顺序执行

9.1
创建文件夹

  1. 登陆Repository Manager 参考第5章的命名规则创建文件夹

操作:FolderàCreateà在弹出的对话框中输入文件夹名称

不关闭对话框进入下一步

  1. 选择新建文件夹的属主

9?1 选择文件夹属主

9.2
复制共享对象

此部分操作由开发从员完成

  1. 登陆Repository Manager将文件夹“000_Shared”下的Mapping“M_GetParam”、 “M_getSessionRunStatus”拖拽到新建的文件夹中,并在弹出的创建快捷链接对话框选择“全部确定”。

9?2 创建共享Mapping快捷链接

  1. 登陆Workflow Manager打开新建的文件夹,将文件夹“000_Shared”下的Session “pre_S”、“post_S”拖拽到新建的文件夹中,并在弹出的复制对话框选择“确定”,

9?3 复制共享Session

然后处理Mapping冲突,为找不到的Mapping重新选择对应的快捷方式

9?4 Mapping冲突处理

冲突处理完接提示选择下一步并确认,完成这一步骤的操作

  1. 登陆到Workflow Manager打开新建的文件夹,编辑“post_S”、“pre_S”源和目标的Connection(连接)

9?5编辑“post_S”

9?6 编辑“pre_S”

10  Mapping设计

注意1:在进行Mapping之前,需要在目标表数据库的ETLMGR.ETL_INCR_PARAM中插入对应目标表相关的信息,具体内容可能过查询ETLMGR.ETL_DICT获得帮助

注意2:ETLMGR.ETL_INCR_PARAM.TIME_BEFORE_NOW(增量结束时间与当前时间的时间差,以秒为单位)的值建议不小于300,以避免一些来不及commit的数据会丢失。

登陆到Designer,本章所述的所有操作均在Designer客户端。

10.1 
导入源和目标的表结构

导入源表结构

创建源表的ODBC连接

EnableNcharSupport: 默认是不打勾的,不打勾的情况下导入char,varchar,varchar2会变成nchar,nvarchar,nvarchar2

ODBC连接只是作为导入源表和目标表的结构的媒介,不会进行实际数据的处理,实际数据的处理由服务端Connection完成

从ODBC连接中导入源表的结构

导入目标表结构

导入目标表结构与导入源表结构相似,但是要先切换到目标表的编辑窗口

10.2 
Mapping设计

开发时注意查看客户端左上方的Folder显示,一定要在正确的Folder里面工作。

  1. 创建Mapping

展开文件夹“000_Sample”,找到Mapping“M_for_copy”并将其拖拽到目标文件夹,在弹出的对话框中选择“Yes”

  1. 根据第五章的命名规范重命名“M_for_copy”并添加注释

操作:菜单MappingàEdit

Comment(注释) 内容填写如下:

Create
date: 日期

Create
by:   用户名(现实中文名)

Desc: decription 例:用户信息交换

[

Modify Date:

Modify by: 用户

Desc:
decription 例:过期用户信息不再交换

]

  1. 所有的Mapping都添加四个参数(Parameter),

操作:在复制Mapping的过程中已经创建

  • $$INCR_START_DT STRING(20)    DEFAULT: 1900-01-01
    00:00:00  à增量起始时间(表示增量区间的起点)
  • $$INCR_END_DT   STRING(20)   
    DEFAULT: 2900-01-01 00:00:00 à增量截至时间(表示增量区间的终点)
  • $$INCR_START_ID DECIMAL(19,0) DEFAULT: 0                   à增量起始主键值
  • $$INCR_END_ID   DECIMAL(19,0) DEFAULT: 9999999999999999999 à增量截至主键值
  1. Mapping具体设计参考文档《Informatica觉见场景设计》

l   在组件中创建变量时,注意选择数据类型,选择长度,在给变量赋值或将变量赋值给字段时要保持数据类型一致,不一致时要使用显式类型转换。

l  
在做字符处理时,注意NULL,空字符串和空格的区别以及不同的判读和处理方式

l   不需要输出的端口不勾选OutputPort。当组件中有重名的字段时,输入的字段在原字段后加‘_IN‘,变量的字段在原字段后加‘_V‘,输出字段名尽量保持和下一个组件的输入字段名名称一致,以便使用按名称自动连接

l   数据加载方式:全量,增量

  • 全量: Truncate & Insert
  • 基于时间的增量(具体实现方案参考Informatica常见场景设计)
  • 基于主键的增量(具体实现方案参考Informatica常见场景设计)
  • 对于所有的Mapping要求尽量使用增量(增量区间可优先按时间确定,没有时间戳时按主键确定)
  • 对于数据源表确实无法提供增量时间或主键的则全量抽取。全量抽取只适用于只适用于数据量小的表,如果数据表的数据量特别大,则需要跟需求方重新确定需求。

10.3 
常用组件设计说明

l   Source Qualifier 组件使用:

  • 对于源系统使用nvarchar2,导入时确保在mapping中使用nstring与之匹配,这样才能确保字符传递的正确性,否则会出现乱码,字符被截断等问题
  • 如果Mapping中存储存在两个及以上的Source表,同时他们来自相同的源系统,尽量使用Source Qualifier 进行关联,并在Source Qualifier中添加关联条件,而不是用Joiner控件
  • 在Source Qualifier中添加增量条件:

时间戳字段>= TO_DATE($$INCR_START_DT,’YYYYMMDD
HH24:MI:SS’) And

时间戳字段 < TO_DATE($$INCR_END_DT,’YYYYMMDD
HH24:MI:SS’) (注意这里是小于,而不是小于等于)  或

主键字段> TO_DATE($$INCR_START_ID,’YYYYMMDD
HH24:MI:SS’) And

主键字段 <= TO_DATE($$INCR_END_ID,’YYYYMMDD
HH24:MI:SS’) (注意这里是大于,而不是大于等于)

l   Joiner 组件使用:

  • 对于大表(大于500000行)的连接查询一定要使用Joiner
  • 使用Joiner控件时,要以小表为master表,同时要对两组数据进行排序,根据Joiner的字段进行排序,排序一定要使用同一个方式:升序或降序。此时控件中的Sorted input要打勾

l   Lookup 组件使用:

  • 尽量使用有连接的Lookup,降低性能风险
  • Lookup中如果内部有SQL,保证SQL的字段顺序和Port的字段顺序一致
  • 如果是无连接的Lookup,对于组件的命名采用LKP_返回的字段名称;如果是有连接的Lookup,如果是返回一个值,那组件的命名采用LKP_返回的字段名称,如果是多个值,那组件的命名采用LKP_被查询表名称
  • 对于小表(小于500000行)的连接查询使用Lookup控件
  • 对于Lookup维表查找维度ID时,需要在输出字段添加default value = -1,如下图:

  • Lookup控件的使用有三种方式,同时注意几点

1:
Connect

对于mapping中对某个表只查询一次的尽量使用Connect Lookup,在使用Connect lookup的时候对于没有用到的Column可以删除掉,防止浪费Cache空间,一定要使用Cache --Lookup Caching Enabled

2: Unconnect

对于mapping中对某个表查询多次的尽量使用Unconnect Lookup,对于没有用到的

字段可以进行删除,防止浪费Cache空间

3: Lookup函数

对于mapping中的Expression中进行查询的尽量使用Lookup函数

4:Lookup表最好从Targets中获取,也可以从Sources中获取

5:Lookup函数不能在mapplet中使用

6:Lookup 使用中的条件允许 Null = Null

l    Update
Strategy组件使用:

  • 要求目标表有主键索引
  • 将SESSION 的属性设置为UPDATE ELSE INSERT。会导致SESSION 的运行速度明显的下降,因为INFORMATICA 对每行记录都执行两个操作:更新(根据主键),如果返回的结果时更新了0 条记录,再执行一个插入操作。
  • 改变这种情况的办法是,提前知道在MAPPING 中要执行的是DD_UPDATE,还是DD_INSERT,然后告诉UPDATE 控件采用什么更新策略

不能使用DD_REJECT,可以在Update Strategy组件前添加filter组件将需要做DD_REJECT的数据过滤掉

l   AGGREGATOR 组件使用:

  • 在使用Aggregator前,最好对数据进行排序,这样会极大提高系统性能,此时Sorted Input应该打勾
  • 一个mapping中最好只用一个Aggregator 控件。要使用多个Aggregator可以考虑使用临时表把mapping拆开
  • Aggregator与Lookup控件的一起使用时,每个控件都需要索引缓冲、数据缓冲并且他们共享内核里面同样的HEAP
    段,这些内存区域是非常关键的,当处理的记录数量非常巨大时会引起内存的不稳定
  • 当包含它的Mapping速度比较慢时,可以调整Session中的参数:

Maximum
Memory Allowed For Auto Memory Attributes 
512M

 Maximum
Percentage of Total Memory Allowed For Auto Memory Attributes 5%

Worklfow运行的时候会从他们中取小的一个值

11  Workflow设计

开发时注意查看客户端左上方的Folder显示,一定要在正确的Folder里面工作。

11?1查看工作文件夹

Workflow设计概览:Workflow设计完成后的样子及各部分功能

11.1 
创建Workflow

登陆到Repository Manager,打开目标文件夹,展开(不是打开)文件夹“000_Shared”,找到Workflow“WF_for_copy”并将其拖拽到目标文件夹,此时将会弹出一个“Copy Wizard”对话框。在冲突处置中选择“rename”并按命名规范重命名。

11?2按命名规范重命名

11.2 
Workflow属性设置

  1. General(通用) ,添加注释

Create date: 日期

Create by:   用户

Source table: Source table1

Source table2

……

Target table: Target table1

Target table2

……

Desc: decription 例:将广西用户信息同步到集团

[

Modify Date:

Modify by: 用户名(现实中文名)

Desc: decription 例:添加北京用户信息同步到集团

]

  1. Properties(属性)
  • Enable HA recovery:打勾
  • Automatically recover terminated task:打勾
  • Maximum automatic recovery attemps:5
  1. Schedule

创建可复用的计划

为Workflow分配计划

11.3   添加可复用Session “pre_sql”、“post_sql”

如果在文件夹下找不到pre_S”、“post_S”,参考复制共享对象

  1. 将可复用Session “pre_S”、“post_S”,添加到在Workflow中, 并按命名规范重命名,如workflow名为“WF_M_CJN001”,则Session的名称分别为“pre_ S_M_CJN001”、“post_ S_M_CJN001”

11?3 可复用Session添加到Workflow

  1. 修改Session “pre_sql”、“post_sql”的属性
  • General属性

Failed Parent if this task failed勾选

Treat the input link as:       And

11?4 修改General属性

  • Properties属性

Session Log File NameFolderName_SessionName.log

(如:000_Sample_pre_S_M_CJN001.log、                   
000_Sample_post_S_M_CJN001.log)

11?5 设置pre_S_*的日志文件

11.4     编辑Assignment

设置$$TARGET_OWNER,$$TARGER_TABLE的值

$$TARGET_OWNER = 目标表的owner

$$TARGET_TABLE = 目标表名

11?6 编辑Assignment

12  Session设计

登陆到Workflow Manager,开发时注意查看客户端左上方的Folder显示,一定要在正确的Folder里面工作。

12.1 
创建Session

登陆到Workflow Manager,,打开Session放置的Workflow

在工具栏的左上角左击session创建图标后松开鼠标,然后在工作区任意位置左击一下弹出Session创建对话框,选择正确的mapping,并按照5.4规范命名

12?1 创建Session

将Assignment、Sessionpre_S_*、新建的Session、post_S_*串联

12?2 串联Session

12.2 
必要Session属性设置

对于Session的修改和设置一定去到Session工作区设置,尽量不要在Worklet或者Workflow里面做特殊设置,比如指定表名或者指定用户名等。

12.2.1   
General属性

  • Failed Parent if this task failed:勾选
  • Treat the input link as:       And

12?3 General属性设置

12.2.2   
Property属性

  • Session Log File Name:FolderName_SessionName.log,(参照样例,需要手动写入)
  • Parameter Filename :

当 增量参数是由pre_S*生成的参数文件控制时:$PMRootDir/BWParam/$$PARAM_FILE (固定值)

当 增量参数不是由参数文件控制时:留空

  • Treat Source Rows as, 有几种类型:1: Insert 2:Update 3:Data driven

对于目标表只有Insert的,就选择,Insert,

对于目标表中存在更新,同时没有使用UpdateStrategy控件的使用: Update

对于Mapping中使用UpdateStrategry控件的使用Data driven

  • Commit Interval:默认值10000,当单次加载超过10 0000行时将值设置为100000
  • Recovery Strategy:

调度增量(或者一次全量)超过500万 并且 在加载数据之前没有删除冗余数据操作的调度
选择:Resume from last checkpoint

其它:Restart task

  • Enable high precision:勾选

12?4 Properties属性设置

12.2.3   
Config Object属性

  • Default buffer block size

当运行速度较慢时考虑调整

Informatica用来存储数据的最小单位,默认值12KB。Information初始化Session时,对每个Session分配2个Block作为初始化分配。如果一行数据大于Block的大小时则每一行数据均要移动多个Block,影响执行效率。建议取一行数据最大值的整数倍作为Block的大小。如一行数据的大小是8KB,可以调整Default buffer block size为24KB或者16KB

  • Maximum Memory Allowed For Auto Memory
    Attributes

512M  单次取数介于500000行到2000000

1024M  单次取数介于2000000行到5000000

  • Maximum Percentage of Total Memory Allowed
    For Auto Memory Attributes: 10%

以上两个参数通常情况下保留缺省值即可,对于某些占用内存较大的Mapping可以考虑增大,最大不能超过1G,同时他们之中取小的值作为最终值

  • Save session log for these runs:100,保存最近N次的运行日志

Tips:菜单—>TaskàSession ConfigurationàEditàPropertiesà 将Save session log for
these runs 设为100

可修改整个文件夹所有session的“Save session log for these runs”的值

12.2.4   
Mapping属性

12.2.4.1 Source 属性

配置源表的连接信息,包括使用的Connection(连接),源表

12?5 设置源表的连接信息

检查源表的过滤条件(可选),默认是继承mapping中Source Qualifier 中的过滤条件一致,在session里可以进行个性化设置

12?6 设置Source Filter

12.2.4.2 Target属性

Target load type : Bulk/Normal  对于目标表中存在索引的,Target load type只能选择l装载方式。默认值是Bulk,本文要求统一设置成Normal

Tips:可在Workflow Manager中的Tools->Options->Miscellaneous中进行初始设置

Insert: 勾选

Update as Update :勾选,当指定的目标表中只有Update动作时,使用

Update as Insert 不勾选, à当指定的目标表中只有Insert动作时,使用

Update else Insert不勾选 à 可用于维表或其它主数据表的数据增量操作,如果已经有US更 新策略组件则不用。

Delete 不勾选

Truncate target table
option :
通常是全量抽取时,用于目标表需要先进行清除动作时,这个选项要慎重选择因为会清空全表的数据。默认是末被勾选的。

Reject filename: $$REJECT_FILE

  • Pre Sql设置数据的重载机制,根据情况添加以下脚本

情况1:按时间增量基于delete-insert方式时填写以下语句,否则留空

Delete
from $$TARGET_OWNER.$$TARGET_TABLE

Where
(increment column)>=to_date(‘$incr_start_dt’, ‘YYYY-MM-DD
HH24:MI:SS’)

And  (increment column)<to_date(‘$incr_end_dt’,
‘YYYY-MM-DD HH24:MI:SS’);

Commit;

情况2:按主键增量且基于delete-insert方式时填写以下语句,否则留空

Delete
from $$TARGET_OWNER.$$TARGET_TABLE

Where
(increment column)> $$incr_start_ID

And  (increment column)<= $$incr_end_ID

Commit;

情况3:全量

留空

Post SQL: 默认留空,如果需要在目标表加载完成在数据库执行的任务可自行编写

Target
Table Name:
 $$TARGET_OWNER.$$TARGET_TABLE

13  从中间库取数据

从中间库取数据时的设计需要在中间库数据加载不及时的情况下,从中间库的源库取数据来避免数据漏采,所以在Workflow中要设计两个Session分别能从中间库、中间库的源库抽取数据。可复用Session‘pre_s_MID’可以生成当批次的增量时间值,并根据中间库取数据的及时情况让其中一个Session空跑。

参考:文件夹000_Sample下WF_M_FOR_MID

注意:以下设计只能针对基于时间的增量。

13.1  复制共享对象

参考复制共享对象创建‘M_GetParam_Mid’的快捷方式,复制’ re_S_MID’、’post_S_MID’

13.2   Workflow设计

向目标库的 ETLMGR.ETL_INCR_PARAM插入所需的数据,ETL_INCR_PARAM.SESSON_NAME = S_M_TargetTable

创建Workflow时从000_Sample 复制WF_for_copy_mid进行重命名。参考添加可复用Session添加‘pre_S’,‘pre_S_MID’,‘post_S_MID’

Assignment:跟直接从源库数据不同,从中间库取数据时需要检查中间库的数据是否及时,所以要指定中间库的源表。

pre_S_M_ TargetTable:由‘pre_S’重命名而来, 属性设置与添加可复用Session一致。

pre_S_ M_ TargetTable_MID:由‘pre_S_MID’重命名而来, 属性设置与添加可复用Session一致,但是要指定两个源表的Connection分别到中间库和目标库.

post_S_ M_ TargetTable:由‘post_S_MID’ 重命名而来,属性设置与添加可复用Session一致.

S_M_TargetTable_MID属性设置参考Session设计,源表的Connection指向中间库

S_M_TargetTable属性设置参考Session设计,源表的Connection指向中间库的源库,可能需要向管理员申请对应Connection的执行权限。

特殊设置:’treat the input link as ’ = ‘or’

Link1: $pre_S_M_TargetTable_MID.ErrorCode
<> 0

Link2: $pre_S_M_TargetTable.ErrorCode
=  0

Link3: $pre_S_M_TargetTable.ErrorCode
=  0

双击连线(link)可以编辑连线的条件

14  写数据到FTP 文件

可参考文件夹000_Sample下WF_M_FOR_FTP的Workflow的设计

FTP Connection:在帮助文档的搜索‘FTP Connection’关键字

写数据到FTP文件时,由于目标不再是数据库,所以不需要在ETLMGR.ETL_INCR_PARAM设置增量参数的值,也不能在将运行日志写入日志表中。增量的控制一般采用sysdate(DB参数)来实现。建议每FTP文件的命名带上时间戳并且在FTP文件顺利生成后写一个标志文件来标志FTP文件顺利生成。

15  开发建议

1)  
习惯点击Ctrl+S进行Mapping的保存,避免客户端崩溃造成的不必要损失

2)  
习惯性的经常去Refresh Mapping和Validate Session和Workflow,保持Session和Mapping的一致,保持Session的正确可用性

3)  
下班前及在进行重大修改前对相关内容做备份,备份操作参考12章

16  备份及恢复

16.1  备份

登陆到Repository Manager

  • 备份Workflow

操作:选择需要备份的Workflow(结合Shift及Ctrl可多选)à右键àExport(导出)à选择保存路径并填写文件名称à点击保存按钮

上述操作会备份Workflow及Workflow所有子对象如:Session、Mapping、Source、Target等

  • 备份Mapping

操作:选择需要备份的Mapping(结合Shift及Ctrl可多选)à右键àExport(导出)à选择保存路径并填写文件名称à点击保存按钮

上述操作会备份Mapping及Mapping的所有子对象如: Mapping、Mapplet、Source、Target等

  • 备份其它对象,参考上述两种备份操作

16.2  恢复

登陆到Repository Manager

操作:菜单RepositoryàImportant Objectà选择需要导入的XML文件,打开à选择下一步à选择需要导入的对象à选择并确认目标文件夹àImportà (有冲突时会出现)处置冲突的解决方法à下一步

Tips:在处置冲突时可对多外对象应用相几的处置方法

14?1 导入对象时处置冲突

17  参考文档

18  常见问题解决

解决方法:检查Workflow、Session的命名规范,如‘S_M_TCMS_TM_DEPARTMENT‘写成

‘s_M_TCMS_TM_DEPARTMENT‘

时间: 2024-10-11 21:11:22

INFORMATICA 开发规范的相关文章

web前端开发规范

本文原创,这里首先声明,转载注明本文出处,翻版必究! web前端开发规范的现实意义 1.提高团队的协作能力 2.提高代码的重复利用率 3.可以写出质量更高,效率更好的代码 4.为后期维护提供更好的支持 5.可读性高 一.命名规则 1.html命名规则: a.文件名称命名规则:统一使用小写英文字母.数字.下划线的组合,不得包含汉字空格和特殊字符 2.命名原则:方便理解.方便查找 b.索引文件命名原则:index.html.index.htm.index.asp.index.aspx.index.j

Sqoop 脚本开发规范(实例手把手带你写sqoop export和sqoop import)

首先,先明确,为什么Sqoop需要规范的脚本开发呢? 答:是因为,Sqoop import HDFS/Hive/HBase这些都是手动.但是在实际生产里,有时候,需要用脚本来完成. 比如,通过shell脚本来操作对Sqoop.Hive.HBase.MapReduce.HDFS.Spark.Storm等各种. Sqoop 脚本开发规范 目录规范 1.目录结构体系 /home/hadoop(开发用户)/app/djt(数据来源.业务)/sh/sqoop 示例:/home/hadoop/app/djt

C#语言开发规范-ching版

学习C#之初,始终不知道怎么命名比较好,很多时候无从命名,终于有一天我整理了一份命名规范文档,自此我就是按照这个命名规范书写代码,整洁度无可言表,拙劣之处请大家斧正,愚某虚心接受,如有雷同,不胜荣幸 C#语言开发规范 作者ching 1.  命名规范 a) 类 [规则1-1]使用Pascal规则命名类名,即首字母要大写. eg: Class Test { ... } [规则1-2]使用能够反映类功能的名词或名词短语命名类. [规则1-3]不要使用“I”.“C”.“_”等特定含义前缀. [规则1-

Web前端开发规范文档(google规范)

(Xee:其实没什么规范约束,但是养成一种好习惯,何乐而不为?) 我推荐去看看google的开发规范,然后从他的当中去总结自己的开发规范. Google HTML/CSS代码风格指南 Google JavaScript 编码规范指南 ------------------------------------------------------------------------------------------------------------------------------- 绝大多数项

麦子新课上线之web前端开发规范

同学们,Web前端开发又有课程上线啦!对Web前端感兴趣的同学们,速来围观哦~~下面简单介绍一下课程. [学霸学新,课快人一步] 课程简介: Web前端开发规范,可以帮助同学们,了解web前端开发规范的意义,掌握前端开发中的开发规范,掌握web前端开发中的实用技巧.面对企业团队开发,可以很快融入团队合作中,高效率的完成团队给予的任务. 课程地址→http://www.maiziedu.com/course/web/621-8960/ 老师简介: 何虎:8年软件开发经验,擅长互联网应用程序开发,曾

shell开发规范

版本1.0版,参考网上的一些文章规整而来.后期打算继续修改.完成一篇适合自己的shell开发规范. 最新编辑时间:2017.6.25 一. 命名规范 1. 版本和运行参数 1) 脚本开始之前以注释形式说明版本号:(推荐)2) 如果调用其他工具,还需说明工具的版本号:(推荐)3) 为脚本添加必须的运行参数,类似于C程序的运行参数,可使用getopt的方式取得运行参数值,如基本的参数有:-v - 版本号:-h – 帮助信息:(推荐) 2. 变量命名 1) 变量命名要前后统一,建议使用全部大写字母,如

软甲开发规范

软件开发规范:获得本目录的绝对路径sys.payh.abspath(__file__)获得本级目录的父目录sys.payh.dirname(sys.payh.abspath(__file__)) 软件名 bin #可执行文件  start.py#调用core下面的main代码启动软件 core#主代码  main.py#调用数据库的配置文件存放处 conf#配置文件中可以导入数据库文件  setting.py db#数据库文件  db.json docs#软件文档  一些文档 lib#库文件,就

我的开发规范

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6413978.html 每个开发人员在长久的开发生涯中,都会养成自己的一套开发风格,或者说,规范.之后在开发项目时都会下意识地遵循着心中的规范去设计.开发项目.这种开发风格随着经验和能力的增加会不断修改.演变,由幼稚走向成熟.我只是个刚开启开发之旅的小菜鸟,在此记录下我的开发规范,以便日后不断修正.进步. 1:项目架构与设计 分6层:View层编写前端页面,Control层处理view层请求(包括各servl

Android技术积累:开发规范

原创文章,转载请注明:转载自Keegan小钢 并标明原文链接:http://keeganlee.me/post/android/20150709 微信订阅号:keeganlee_me 写于2015-07-09 上个月发布了Android项目重构的三篇系列文章,其中,界面篇中提到了在项目中保持规范性的重要性,也有简单举了几个例子.这篇文章则将其延伸,提供更完整的开发规范说明. 书写规范 1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了. 2.