INFORMATICA 开发规范

Posted JUN王者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 组件使用: