INFORMATICA 开发规范

目    录html

Informatica开发规范.... 1java

目    录.... 2mysql

1        编写目的.... 4sql

2        ETL研发责任人界定.... 4数据库

3        ETL 研发数据库操做约束条件.... 4编程

4        定义.... 4服务器

5        范围.... 5session

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

7        命名规则.... 6app

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、DB二、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'

相关文章
相关标签/搜索