Informatica - PowerCenter平台ETL开发规范

更新时间:2024-04-29 03:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Informatica PowerCenter平台

ETL开发规范

Informatica PowerCenter平台 ETL开发规范 文档历史记录

变更历史

最后更新时间: 2015-07-21 版本 V1.0 更新日期 2015-07-20 作者 叶兆明 变更描述 创建全文 审 阅

姓名 角色 审阅章节 意见与签名 分 发

Name Role

Page: 2 of 39

Informatica PowerCenter平台 ETL开发规范 文 档 目 录

1. 文档介绍 ................................................................................................................................................... 5 1.1 1.2 1.3 1.4 1.5

文档目的 ........................................................................................................................................... 5 适用范围 ........................................................................................................................................... 5 文档读者 ........................................................................................................................................... 5 参考文献 ........................................................................................................................................... 5 术语与缩写解释 ............................................................................................................................... 5

2. POWERCENTER平台介绍 ................................................................................................................... 6 3. 环境介绍 ................................................................................................................................................... 8 3.1 3.2 3.3 3.4 3.5 3.6 3.7

概述 ................................................................................................................................................... 8 开发环境 ........................................................................................................................................... 8 测试环境 ........................................................................................................................................... 8 生产环境 ........................................................................................................................................... 8 数据库账号 ....................................................................................................................................... 8 数据连接 ........................................................................................................................................... 9 参数文件 ........................................................................................................................................... 9

4. 通用规范 ................................................................................................................................................. 16 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11

INFORMATICA文件夹配置 ............................................................................................................... 16 操作系统文件夹配置 ..................................................................................................................... 16 SESSION配置项 ................................................................................................................................ 17 INFORMATICA用户配置 ................................................................................................................... 17 ETL转换规则说明 .......................................................................................................................... 17 从平面文件导入数据 ..................................................................................................................... 17 从数据库导入数据 ......................................................................................................................... 18 从数据库导入数据结构 ................................................................................................................. 18 布局规范 ......................................................................................................................................... 18 注释规范 ......................................................................................................................................... 18 日志文件 ......................................................................................................................................... 20

5. 命名规范 ................................................................................................................................................. 21 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18

概述 ................................................................................................................................................. 21 FOLDER ............................................................................................................................................ 21 MAPPING .......................................................................................................................................... 22 MAPPLET .......................................................................................................................................... 22 SESSION ............................................................................................................................................ 22 WORKLET ......................................................................................................................................... 23 WORKFLOW ..................................................................................................................................... 23 SOURCE DEFINITION ........................................................................................................................ 23 TARGET DEFINITION ........................................................................................................................ 24 AGGREGATOR .................................................................................................................................. 24 EXPRESSION ..................................................................................................................................... 24 FILTER .............................................................................................................................................. 25 JOINER .............................................................................................................................................. 25 LOOKUP ............................................................................................................................................ 25 NORMALIZER ................................................................................................................................... 26 RANK ............................................................................................................................................... 26 ROUTER ............................................................................................................................................ 26 SEQUENCE GENERATOR ................................................................................................................... 26

Page: 3 of 39

Informatica PowerCenter平台 ETL开发规范 5.19 SORTER ............................................................................................................................................ 26 5.20 SOURCE QUALIFIER .......................................................................................................................... 26 5.21 STORED PROCEDURE ........................................................................................................................ 27 5.22 UPDATE STRATEGY .......................................................................................................................... 27 5.23 MAPPLET .......................................................................................................................................... 28 5.24 INPUT TRANFORMATION ( MAPPLET ONLY) .................................................................................... 28 5.25 OUTPUT TRANFORMATION ( MAPPLET ONLY) ................................................................................. 28 5.26 DATABASE CONNECTIONS ............................................................................................................... 28 5.27 FTP CONNECTIONS .......................................................................................................................... 29 6. 常用SQL知识介绍 ................................................................................................................................. 29 6.1 6.2 6.3 6.4

NOT IN与MINUS ........................................................................................................................... 29 多表连接中的条件限制(WHERE AND ON) ........................................................................... 29 游标尽量少使用 ............................................................................................................................. 31 异常捕捉 ......................................................................................................................................... 31

7. SQL编写规范 ......................................................................................................................................... 31 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8

原则定义 ......................................................................................................................................... 31 大小写规则 ..................................................................................................................................... 32 缩进与换行 ..................................................................................................................................... 32 别名 ................................................................................................................................................. 33 运算符前后间隔要求 ..................................................................................................................... 33 变量引用 ......................................................................................................................................... 34 注释 ................................................................................................................................................. 34 其它 ................................................................................................................................................. 35

8. 脚本编写规范 ......................................................................................................................................... 35 8.1 8.2

ULTRAEDIT ...................................................................................................................................... 35 SHELL ............................................................................................................................................. 35

9. ETL开发流程 ......................................................................................................................................... 35 9.1 9.2 10. 11. 12.

ETL开发流程 .................................................................................................................................. 35 文档编写要求 ................................................................................................................................. 36 版本控制 ............................................................................................................................................. 36 ETL程序迁移 ..................................................................................................................................... 37 开发建议 ............................................................................................................................................. 38 SOURCE QUALIFIER .......................................................................................................................... 38 MAPPING .......................................................................................................................................... 38 MAPPLET .......................................................................................................................................... 38 EXPRESSION ..................................................................................................................................... 38 LOOKUP ............................................................................................................................................ 38 UPDATE STRATEGY .......................................................................................................................... 39

12.1 12.2 12.3 12.4 12.5 12.6

Page: 4 of 39

Informatica PowerCenter平台 ETL开发规范 1. 文档介绍

1.1 文档目的

本文档主要描述了ETL开发人员在Informatica PowerCenter平台开发Mapping、Session和Workflow需要遵循的统一标准,使得不同项目不同开发人员在Informatica PowerCenter平台交付的ETL程序符合同一标准。

1.2 适用范围

本规范适用于所有使用Informatica PowerCenter工具开发的项目。

1.3 文档读者

本规范面向ETL设计人员、ETL开发人员。

1.4 参考文献

1. 《Informatica PowerCenter官方命名规范》 2. 《Informatica_Standards.doc》

1.5 术语与缩写解释

无。

Page: 5 of 39

Informatica PowerCenter平台 ETL开发规范 2. PowerCenter平台介绍

Informatica PowerCenter产品是Informatica公司推出的ETL开发工具,主要包括服务器端和客户端两部分组件:

? 服务器端

? Informatica Service:PowerCenter服务引擎,是PowerCenter的核心服务,其他服务

依赖于此服务。

? Integration Service:数据抽取、转换、加载服务,是PowerCenter ETL程序运行必不

可少的服务。

? Repository Service:元数据资料库服务,提供对PowerCenter所有元数据的存取管理

支持。

? 客户端

? PowerCenter Designer:Mapping设计开发环境,定义源及目标数据结构,设计转换规

则,生成ETL映射

? Workflow Manager:实现ETL工作流(包括Session、Task、Worklet、Workflow的开

发),基于时间与事件的作业调度

? Workflow Monitor:监控Workflow和Session运行情况,生成日志和报告

? Repository Manager:资料库管理,包括文件夹创建与删除、Mapping等ETL程序的导

入和导出、用户安全性管理等

? Repository Server Administrator Console:资料库的建立与维护,提供B/S访问方式

Page: 6 of 39

Informatica PowerCenter平台 ETL开发规范

Page: 7 of 39

Informatica PowerCenter平台 ETL开发规范 3. 环境介绍

3.1 概述

Informatica PowerCenter在项目中按用途划分,可以包括开发、测试、生产三套环境,每套环境都是按Client/Server方式部署的。

在每套环境都有独立的Informatica Service、Integration Service、Repository Service服务,并且资料库也分别部署,并且三套环境之间的网络是隔离的,互相不能访问。

说明:如非项目特别要求,需要遵循上述约定。

3.2 开发环境

Informatica PowerCenter开发环境主要用于ETL开发人员在项目开发阶段实现Mapping、Session、Workflow的开发、单元测试和联调测试。

对于开发环境的所有开发成果要求每天工作结束后对资料库所有文件夹做一次全备份。

3.3 测试环境

Informatica PowerCenter测试环境主要用于项目用户测试用途,其中的所有ETL程序均都需要从开发环境导入。此环境的ETL程序变更是受控的,不允许ETL开发人员在此环境直接修改ETL程序,特殊情况下可以在此环境调试程序,但也是严格受控的。

3.4 生产环境

Informatica PowerCenter生产环境主要用于支持投产系统的ETL运行,其中所有的ETL程序均需要从开发环境导入。此环境的ETL程序是不允许ETL开发人员直接修改的,必须由管理员和操作员导入。

3.5 数据库账号

数据库账号在Informatica环境中有两个地方会用到,一是在PowerCenter Designer开发mapping时需要连接到数据库读取源和目标表的结构定义,二是Workflow Manager中测试时需要定义数据连接,这写数据连接必须由管理员添加和修改。

Page: 8 of 39

Informatica PowerCenter平台 ETL开发规范 3.6 数据连接

在Workflow Manager要运行Workflow,必须为session指定其引用到的源和目标对应的数据库连接,而这些数据库连接需要预先由管理员在Workflow Manager中添加。

对于Session引用的源与目标库数据连接,严禁直接写数据连接名称,必须采用连接变量的方式,连接变量在参数文件中定义,连接变量的命名必须符合“$DBConnection_xxx”格式(其中xxx为要连接到的系统简称)。

3.7 参数文件

在PowerCenter Mapping、Task、Workflow通过参数变量的支持可以实现动态参数值的注入,但这些参数变量的取值必须在参数文件中定义,运行时Informatica会从指定的参数文件读取参数变量的值。

严格禁止在设计阶段为参数变量设置默认值,参数变量的取值需要从参数文件获得,参数文件禁止将参数值指定到session级别(首次存量的参数文件不限制),如果同一workflow的两个session的参数需要使用不同的参数值,应该使用不同的参数名。

参数文件包括一个初始参数文件、多个首次全量加载参数文件、多个增量加载动态参数文件三种: ? 初始参数文件用于定义全局参数,需在上线前确定,其命名为“param_init.cfg” ? 全量加载参数文件主要用于首次全量加载,需在上线前手工编制,按

“param_xxx_batch_f.cfg”命名(xxx为数据处理批次简称,例如:subta表示分TA批量处理批次)

? 动态参数文件包括在增量加载程序运行阶段可能会改变的变量定义,在增量加载过程ETL程

序会自动更新文件数据,按“param_xxx_batch_i.cfg”(xxx为数据处理批次简称,例如:subta表示分TA批量处理批次) 附:

1. param_init.cfg文件的示例: [Global]

$$schema_downfile=ods_down3 $$schema_ods=ods_ods3 $$schema_dw=ods_dw3 $$schema_crm=htfcrm $$schema_ec=ec $$schema_hec=hec

Page: 9 of 39

Informatica PowerCenter平台 ETL开发规范 $$schema_subta=subta

$$schema_selfta=selfta $$schema_yssfa=yssfa

$$schema_yssfa_ods=yssfa_ods $$schema_ysszhfa_ods=ysszhfa25_ods $$schema_ysszhfa=ysszhfa25 $$schema_oa=ecology $$schema_ips=ods_ips $$schema_fa=yssfa_ods $$schema_yssfa=yssfa $$schema_ysszhfa=ysszhfa25

$DBConnection_crm=htfcrm_htfcrm_ods_172_16_4_142 $DBConnection_ods=ods2_ods_ods3_172_16_3_190 $DBConnection_dw=ods2_ods_dw3_172_16_3_190 $DBConnection_downfile=ods2_ods_down3_172_16_3_190 $DBConnection_subta=htfcrm_hsta_ods_172_16_4_142 $DBConnection_selfta=htfcrm_selfta_ods_172_16_4_142 $DBConnection_ec=htfcrm_ec_ods_172_16_4_142 $DBConnection_hec=htfcrm_hec_ods_172_16_4_142 $DBConnection_heccdc=htfcrm_hec_cdc_172_16_4_142 $DBConnection_yssfa=htfcrm_yssfa_ods_172_16_4_142 $DBConnection_ysszhfa=htfcrm_ysszhfa25_ods_172_16_4_142 $DBConnection_oa=htfcrm_ecology_ods_172_16_4_142 $DBConnection_fa=htfcrm_yssfa_ods_172_16_4_142 $DBconnection_ips=htfips_ods_ips_172_16_4_143

$ParameterFilePath=d:\\etlhome\\parameter $$ParameterFilePath=d:\\etlhome\\parameter $ParameterSqlPath=d:\\etlhome\\sqlfile $$ParameterSqlPath=d:\\etlhome\\sqlfile

mplt_getnextsk.$$schema_dw=ods_dw3 mplt_getlastwkdate.$$schema_ods=ods_ods3 mplt_getnextwkdate.$$schema_ods=ods_ods3 mplt_getnextid.$$schema_ods=ods_ods3

mplt_transform_tradetype_selfta.$$schema_ods=ods_ods3 mplt_transform_tradetype_subta.$$schema_ods=ods_ods3

Page: 10 of 39

Informatica PowerCenter平台 ETL开发规范 mplt_change_tradeacco.$$schema_ods=ods_ods3

mplt_split_agency.$$schema_ods=ods_ods3 mplt_split_agency_ds.$$schema_ods=ods_ods3 mplt_src2odsdict.$$schema_ods=ods_ods3 mplt_ods2srcdict.$$schema_ods=ods_ods3 mplt_get_skregion.$$schema_dw=ods_dw3 mplt_tailfee.$$schema_dw=ods_dw3 mplt_managerfee.$$schema_dw=ods_dw3 mplt_agencyfare.$$schema_dw=ods_dw3 mplt_smaflag.$$schema_ods=ods_ods3 mplt_split_agency.$$dsagencyno=247 $$dsagencyno=247

[ods.WF:wf_precond_crm_call] $$srcsys=CC $$dwnframe=3 $$condtype=CALL

2. 全量加载参数文件示例:

[Global]

$$schema_downfile=ods_down3 $$schema_ods=ods_ods3 $$schema_dw=ods_dw3 $$schema_crm=htfcrm $$schema_ec=ec $$schema_hec=hec $$schema_subta=subta $$schema_selfta=selfta $$schema_yssfa=yssfa

$$schema_yssfa_ods=yssfa_ods $$schema_ysszhfa_ods=ysszhfa25_ods $$schema_ysszhfa=ysszhfa25 $$schema_oa=ecology $$schema_ips=ods_ips $$schema_fa=yssfa_ods $$schema_yssfa=yssfa $$schema_ysszhfa=ysszhfa25

Page: 11 of 39

Informatica PowerCenter平台 ETL开发规范 $DBConnection_crm=htfcrm_htfcrm_ods_172_16_4_142

$DBConnection_ods=ods2_ods_ods3_172_16_3_190 $DBConnection_dw=ods2_ods_dw3_172_16_3_190 $DBConnection_downfile=ods2_ods_down3_172_16_3_190 $DBConnection_subta=htfcrm_hsta_ods_172_16_4_142 $DBConnection_selfta=htfcrm_selfta_ods_172_16_4_142 $DBConnection_ec=htfcrm_ec_ods_172_16_4_142 $DBConnection_hec=htfcrm_hec_ods_172_16_4_142 $DBConnection_heccdc=htfcrm_hec_cdc_172_16_4_142 $DBConnection_yssfa=htfcrm_yssfa_ods_172_16_4_142 $DBConnection_ysszhfa=htfcrm_ysszhfa25_ods_172_16_4_142 $DBConnection_oa=htfcrm_ecology_ods_172_16_4_142 $DBConnection_fa=htfcrm_yssfa_ods_172_16_4_142 $DBconnection_ips=htfips_ods_ips_172_16_4_143

$ParameterFilePath=d:\\etlhome\\parameter $$ParameterFilePath=d:\\etlhome\\parameter $ParameterSqlPath=d:\\etlhome\\sqlfile $$ParameterSqlPath=d:\\etlhome\\sqlfile

mplt_getnextsk.$$schema_dw=ods_dw3 mplt_getlastwkdate.$$schema_ods=ods_ods3 mplt_getnextwkdate.$$schema_ods=ods_ods3 mplt_getnextid.$$schema_ods=ods_ods3

mplt_transform_tradetype_selfta.$$schema_ods=ods_ods3 mplt_transform_tradetype_subta.$$schema_ods=ods_ods3 mplt_change_tradeacco.$$schema_ods=ods_ods3 mplt_split_agency.$$schema_ods=ods_ods3 mplt_split_agency_ds.$$schema_ods=ods_ods3 mplt_src2odsdict.$$schema_ods=ods_ods3 mplt_ods2srcdict.$$schema_ods=ods_ods3 mplt_get_skregion.$$schema_dw=ods_dw3 mplt_tailfee.$$schema_dw=ods_dw3 mplt_managerfee.$$schema_dw=ods_dw3 mplt_agencyfare.$$schema_dw=ods_dw3 mplt_smaflag.$$schema_ods=ods_ods3 mplt_split_agency.$$dsagencyno=247 $$dsagencyno=247

Page: 12 of 39

Informatica PowerCenter平台 ETL开发规范

$$batchno=10 $$startdate=20090101 $$enddate=20100820 $$pubtheme=DC

[crmdwn.WF:wf_dwn_crm_tcustomerinfochange] $$srcsys=CC $$dwnframe=4 $$preserialno=0

3. 增量加载动态参数文件示例:

[Global]

$$schema_downfile=ods_down3 $$schema_ods=ods_ods3 $$schema_dw=ods_dw3 $$schema_crm=htfcrm $$schema_ec=ec $$schema_hec=hec $$schema_subta=subta $$schema_selfta=selfta $$schema_yssfa=yssfa

$$schema_yssfa_ods=yssfa_ods $$schema_ysszhfa_ods=ysszhfa25_ods $$schema_ysszhfa=ysszhfa25 $$schema_oa=ecology $$schema_ips=ods_ips $$schema_fa=yssfa_ods $$schema_yssfa=yssfa $$schema_ysszhfa=ysszhfa25

$DBConnection_crm=htfcrm_htfcrm_ods_172_16_4_142 $DBConnection_ods=ods2_ods_ods3_172_16_3_190 $DBConnection_dw=ods2_ods_dw3_172_16_3_190 $DBConnection_downfile=ods2_ods_down3_172_16_3_190 $DBConnection_subta=htfcrm_hsta_ods_172_16_4_142 $DBConnection_selfta=htfcrm_selfta_ods_172_16_4_142 $DBConnection_ec=htfcrm_ec_ods_172_16_4_142 $DBConnection_hec=htfcrm_hec_ods_172_16_4_142

Page: 13 of 39

Informatica PowerCenter平台 ETL开发规范 $DBConnection_heccdc=htfcrm_hec_cdc_172_16_4_142

$DBConnection_yssfa=htfcrm_yssfa_ods_172_16_4_142 $DBConnection_ysszhfa=htfcrm_ysszhfa25_ods_172_16_4_142 $DBConnection_oa=htfcrm_ecology_ods_172_16_4_142 $DBConnection_fa=htfcrm_yssfa_ods_172_16_4_142 $DBconnection_ips=htfips_ods_ips_172_16_4_143

$ParameterFilePath=d:\\etlhome\\parameter $$ParameterFilePath=d:\\etlhome\\parameter $ParameterSqlPath=d:\\etlhome\\sqlfile $$ParameterSqlPath=d:\\etlhome\\sqlfile

mplt_getnextsk.$$schema_dw=ods_dw3 mplt_getlastwkdate.$$schema_ods=ods_ods3 mplt_getnextwkdate.$$schema_ods=ods_ods3 mplt_getnextid.$$schema_ods=ods_ods3

mplt_transform_tradetype_selfta.$$schema_ods=ods_ods3 mplt_transform_tradetype_subta.$$schema_ods=ods_ods3 mplt_change_tradeacco.$$schema_ods=ods_ods3 mplt_split_agency.$$schema_ods=ods_ods3 mplt_split_agency_ds.$$schema_ods=ods_ods3 mplt_src2odsdict.$$schema_ods=ods_ods3 mplt_ods2srcdict.$$schema_ods=ods_ods3 mplt_get_skregion.$$schema_dw=ods_dw3 mplt_tailfee.$$schema_dw=ods_dw3 mplt_managerfee.$$schema_dw=ods_dw3 mplt_agencyfare.$$schema_dw=ods_dw3 mplt_smaflag.$$schema_ods=ods_ods3 mplt_split_agency.$$dsagencyno=247 $$dsagencyno=247

$$batchno=100 $$startdate=20100821 $$enddate=20100823 $$tano=47

$$pubtheme=SELFTA

[dw.WF:wf_dim_ration_sa_selfta]

Page: 14 of 39

Informatica PowerCenter平台 ETL开发规范 $$tablename=DIM_RATION_SA

[dw.WF:wf_fact_ration_agrmntcount_m_selfta] $$startdate=201006 $$enddate=201008

Page: 15 of 39

Informatica PowerCenter平台 ETL开发规范 4. 通用规范

4.1 Informatica文件夹配置

登录Informatica Administration Console主页面,在Integration Service服务节点下的“Processes”页配置Informatica文件夹:

$PMRootDir: $PMSessionLogDir: $PMBadFileDir: $PMCacheDir: $PMTargetFileDir: $PMSourceFileDir: $PMExtProcDir: $PMTempDir:

$PMWorkflowLogDir: $PMLookupFileDir: $PMStorageDir:

G:\\Informatica\\PowerCenter8.6.1\\server\\infa_shared $PMRootDir/SessLogs $PMRootDir/BadFiles $PMRootDir/Cache $PMRootDir/TgFiles $PMRootDir/SrcFiles ./ExtProc

$PMRootDir/Temp

$PMRootDir/WorkflowLogs $PMRootDir/LkpFiles $PMRootDir/Storage

上述变量中:

? $PMRootDir:Informatica工作文件的根目录,建议将此目录调整到用户自定义目录下 ? $PMSessionLogDir:Informatica Session运行日志存储目录 ? $PMBadFileDir:Informatica Session运行被拒绝错误数据存储目录 ? $PMCacheDir:Informatica缓存文件目录

? $PMTargetFileDir:Informatica 目标文件存储目录 ? $PMSourceFileDir:Informatica源文件存储目录 ? $PMTempDir:Informatica临时文件存储目录

? $PMWorkflowLogDir:Informatica workflow运行日志文件存储目录 ? $PMLookupFileDir:Informatica Lookup生成文件存储目录

4.2 操作系统文件夹配置

对于用到的Unix/Windows文件夹(备份文件夹、源文本下载文件夹、数据库数据文件存储文件夹等),需要向管理员申请开立。

Page: 16 of 39

Informatica PowerCenter平台 ETL开发规范 4.3 Session配置项

Session在运行时会根据预先的配置参数进行处理,在Informatica中同一文件夹下的多个session可以共享同一个配置,在Workflow Manager中通过“task”菜单下的“Session Configuration”子菜单可以创建、修改和删除配置模板。

这些配置模板包括内存选项、日志选项、出错处理等方面的参数,这里需要调整出错处理选项中的“Stop On Errors”参数为“1”,即session运行一旦出错就停止。

4.4 Informatica用户配置

根据ETL开发用户在Informatica Administration Console中创建用户、创建角色以及用户权限分配。

按角色划分,项目中需要设置三种角色:管理员、开发人员、操作员三种角色的用户,对于ETL开发人员一般授予PowerCenter Developer、PowerCenter Operator的角色,其他角色用户根据项目要求配置。

4.5 ETL转换规则说明

在ETL开发之前,ETL开发人员需要准备好源到目标的转换映射规则说明文档,可以从设计人员获取源与目标的转换与映射规则。

4.6 从平面文件导入数据

在对平面文件做任何转换处理前,建议先将平面文件抽取到临时表中,然后再基于临时表做处理。 但需要注意以下几点:

? 一般从平面文件读取字符型数据时需要使用ltrim和rtrim函数去除左右空格(但如果空格字符

有意义,则不能去除)

? 使用Upper函数将字符型数据转为大写,但需要确定数据对大小写是不敏感的(即数据是不

区分大小写的)

? 如果从固定分隔符分隔的结构化平面文件,必须使用在数据本身不会存在的字符作为分隔

符,应该避免使用逗号做分隔符,如使用:“~”分隔符

Page: 17 of 39

Informatica PowerCenter平台 ETL开发规范 4.7 从数据库导入数据

Mapping在设计时总是希望每次仅抽取自上次抽取以来发生变化的数据,对于从同一数据库多张数据表Join抽取数据的操作可以在一个source qualifier组件中通过SQL Join方式抽取数据,而不是通过Joiner组件join表。如果这些数据表不在同一个数据库则需要先将数据表复制到本地数据然后在一个source qualifier组件抽取。

注意:严格禁止使用DBLink跨数据库拼接数据表的做法。

4.8 从数据库导入数据结构

在从Oracle数据库中抽取多个用户下的数据表结构时会遇到问题,因为Informatica不支持同时读取多个用户下的数据表。为解决这个问题,可以将多个用户下的数据表建在一个测试账号下,然后从测试账号下导入所需的表结构定义。

为了规范从数据库导入源数据结构定义,如无特别要求,在导入源数据结构定义时ODBC名称需使用“<源系统英文简称>”。

4.9 布局规范

布局应自左向右,自上而下,层次分明,布局协调,主要的数据流为从左到右成直线(单一输入输出)或成扇形(多输入输出),次要数据流为自上到下成直线(单一输入输出)或成扇形(多输入输出),组件与组件之间应留有足够的空间展示组件之间连接线上的信息。主要输入输出,如下图:

4.10 注释规范

一个好的ETL程序不仅仅只包括代码还应该包括正确的注释,这不仅仅有助于在生产环境程序抛出错误异常时便于维护人员解决问题也是为了在资料库最大限度的保存ETL元数据。

Page: 18 of 39

Informatica PowerCenter平台 ETL开发规范 ? 资源库每个文件夹Comment必须包含项目名称和项目经理名称

? 每个Mapping、Session、Worklet、Workflow的描述框中必须有注释,用于说明功能用途 ? 每个转换组件的描述框中必须有注释,用于说明组件的用途和目的 ? 如果转换组件涉及业务规则,则需要在注释框中说明

? 转换组件每个新建输出端口和变量端口的描述框中都必须有注释,用于说明其目的和用途 转换描述信息的撰写规范:

?

Source Qualifier Descriptions

是否重写SQL,过滤条件

?

Lookup Transformation Descriptions

输入,输出,查询条件

?

Expression Transformation Descriptions

描述该表达式转换的功能,在发生转换的端口也添加描述,并尽量添加注释

?

Aggregator Transformation Descriptions

描述功能

?

Sequence Generators Transformation Descriptions

为某张表的某个字段生成序列

?

Joiner Transformation Descriptions

连接方式

?

Normalizer Transformation Descriptions

描述功能

?

Filter Transformation Descriptions

描述功能

?

Stored Procedure Transformation Descriptions

描述功能

?

Mapplet Input Transformation Descriptions

输入端口的用途

?

Mapplet Output Transformation Descriptions

输出端口的用途

?

Update Strategies Transformation Descriptions

更新类型(插入,更新,删除)

?

Sorter Transformation Descriptions

排序端口和方向

?

Router Transformation Descriptions

Page: 19 of 39

Informatica PowerCenter平台 ETL开发规范 描述分组和各分组的功能

4.11 日志文件

Session每次运行都会生成一个日志文件,默认情况下,日志文件是以session名称+“.log”命名的,对于同一个session在多个workflow中引用的情形,要确保session的名称不同。

Informatica中日志文件生成有两种方式,一种是按运行次数,一种是按时间戳方式,默认是按运行次数命名日志文件,不同的是按运行次数生成日志可以限制只保留最近n次的日志,但按时间戳方式生成日志则Informatica无法自动清理日志。

Page: 20 of 39

Informatica PowerCenter平台 ETL开发规范 5. 命名规范

5.1 概述

对象类型 Folder Mapplet Mapping Session Workflow Worklet Source Definition Target Definition Aggregator Expression Filter Joiner Lookup Normalizer Rank Router Sequence Generator Sorter Source Qualifier Stored Procedure Update Strategy Mapplet 命名约定 _ mplt___ m___ Worklet Input Transformation Output Tranformation Database Connections FTP Connections 说明: s_ wf___ wflt___ src_ tgt_ AGG_ EXP_ FLT_ JNR_ LKP_ NRM_ RNK_ RTR_ SEQ_ SRT_ SQ_ STP__ UPD__ MPLT_ wklt___ INP_ OUT_ <数据库实例>_<用户名>_<数据库服务器IP地址> FTP__<用户名> 转换组件的命名应该是自解释的,并接尽可能体现组件在mapping中的作用和目的,其命名中的功能描述使用首字母大写的英文单词缩写拼接而成,并且应避免使用“_”字符,例如:

FLT_TransAmtGreaterThan0名称是个不错的命名,而FLT_Trans_Amt_Greater_Than_0命名则比较糟糕。

5.2 Folder

_

例如:ODS_GLDP,其中ODS表示此文件夹存放ODS转换程序,GLDP为项目简称。

Page: 21 of 39

Informatica PowerCenter平台 ETL开发规范 5.3 Mapping

Mapping是Informatica对象体系树中最高层次的对象,包含了所有用于支持数据抽取、转换的组件对象,其命名应能体现所有对象用途,因此其命名比较困难。

Mapping可以按以下格式命名:

m___

说明:

1)m :对象类型,m表示mapping 2)CallLetter:应用简写 3)ProjAbbr:项目名称缩写

4)Purpose:mapping用途英文描述

例如:m_crmdwn_hftdc_dly_load_shr 注意:

? Mapping各组件尽量不要有多余的字段,没有向下流出的字段尽量删除。

? 只属于Input型的字段,应去除其O选项;同样只属于Output型的字段,去除其I选项。 ? 组件中出现需计算的数值字段,其输入默认值设为0(Default Value),除非特别要求,这

些字段类型大小统一改为Decimal (20,6),由于计算的精度不同会造成数值得高精度误

差,故统一计算精度大小,可以避免该错误发生。

? SEQ模块在作为公用模块时,即Make Reusable时,设置其Number of Cached Values为1。 ? 汇总模块的数据输入最好在之前放一个排序模块对数据进行先排序,并选中汇总模块的

Sorted Input选项。 ? ETL过程产生的Temp表,应在完成后及时删除。

5.4 Mapplet

Mapplet命名格式:

mplt___

说明:

1)mplt :对象类型,mplt表示mapplet 2)CallLetter:应用简写 3)ProjAbbr:项目名称缩写

4)Purpose:mapping用途英文描述

5.5 Session

s_

1)s : 对象类型, s代表 session 2)Mapping_Name:mapping名称

Page: 22 of 39

Informatica PowerCenter平台 ETL开发规范 注意:如果Mapping中存在数值计算,则需要在其Session的属性页选中Enable high precision(允许高精度计算)。

5.6 Worklet

wflt___

说明:

1)wflt :对象类型,wflt代表worklet 2)CallLetter:应用简写 3)ProjAbbr:项目名称缩写

4)ShortDescription – worklet功能和用途英文描述.

5.7 Workflow

wf___

说明:

5)wf :对象类型,wf代表workflow 6)CallLetter:应用简写 7)ProjAbbr:项目名称缩写

8)ShortDescription – workflow功能和用途英文描述.

5.8 Source Definition

Source Definition组件用于提供数据库物理表的逻辑结构定义,可以通过Source-“导入”菜单导入表定义,它通常是mapping最左边的组件。

关系数据库:采用ODBC方式读入元数据,且元数据放置位置与ODBC命名有关,本地ODBC命名需与服务器相同。对于各用户,ODBC命名采用:用户名_SOURCE(例:MM_SOURCE)。ODBC须采用与服务器相同的版本。Oracle客户端也须与服务器采用相同版本。

文本文件:采用Flat文件导入方式,Flat文件的规范为,第一行为各字段名,第二行开始为数据,各数据间使用分隔符。文本文件的服务器位置,在服务器上分别建立各模块文件夹,各文本文件按模块放置于相应的文件夹内,文本文件命名为目标表名。

Source Definition组件命名需遵循: src_

说明:

Source Table Name:按照XY__格式命名,其中XY = TB (数据表)、FF(平面文件)、CB(Cobol文件)。例如:TB_DW_TRANSACTION, FF_OPERATING_PLAN

Page: 23 of 39

Informatica PowerCenter平台 ETL开发规范 5.9 Target Definition

Target Definition组件用于提供数据仓库/数据集市中物理表和文件的逻辑定义,可以通过Target-“导入”菜单导入表定义,它通常是mapping最右边的组件。

Target导入存在同样的三种方式:关系数据库、文本文件、XML文件。Target的元数据管理与Source方式有所不同,其统一放置于Targets下,与本地ODBC命名无关,需要导入的目标表名唯一。

Target Definition组件命名需遵循: tgt_ 说明:

Target Table Name:按照XY__格式命名,其中XY = TB (数据表)、FF(平面文件)、CB(Cobol文件)。例如:TB_DWDEV_TRANSACTION, FF_OPERATING_PLAN

5.10 Aggregator

Aggregator组件用于可加性指标的汇总计算,这些汇总计算是基于分组进行的,而不像Expression组件中的逐行计算。应该尽可能不用此组件,因为在Informatica中此组件的汇总计算性能比数据库SQL Group By汇总差,建议尽可能在Source Qualifier组件中使用SQL方式汇总。

其命名遵循: AGG_

例如:AGG_SUM_OF_TRANS_AMT、AGG_DISTINCT_ORDERS

5.11 Expression

Expression组件用于计算、创建、修改数据以及在数据流中设置和创建变量(不同记录间变量值不会丢失),此组件还可以在Transformation设计区封装成可重用组件。

Expression组件可以在Mapping中编辑和修改,可以创建输入、输出、变量三种不同的端口,Informatica处理Expression组件总是按输入端口、变量不按口、输出端口的顺序计算,但需要注意的是变量端口在组件中的顺序会影响变量端口的计算先后顺序。

Expression组件端口命名需要遵循:

1) 变量端口需以”v_”为前缀,并紧接着数据类型简称:

? 字符型数据:v_char//v_vchar/v_vchar2/v_text ? 数值型数据: v_num/v_float/v_dec/v_real ? 整型数据-:v_int/v_sint ? 日期型数据:v_date 2) 新建输出端口以“o_”为前缀:

Page: 24 of 39

Informatica PowerCenter平台 ETL开发规范 如端口涉及对字符数据的操作处理,其端口命名需体现数据操作,例如:o_conc_custname

如端口涉及数值型数据处理,其端口命名需体现数据操作,例如:sum_alltaxes Expression组件命名应遵循: EXP_

例如:EXP_TRIM_COLS、EXP_DECODE_GEOG_ID

5.12 Filter

Filter组件用于在mapping中按过滤表达式的True/False结果过滤数据,为提高性能,如需过滤数据,在mapping中应尽可能将此组件放在数据流的靠前位置。

Filter组件命名遵循: FLT_

例如:FLT_STOP_OLD_RECS、FLT_GEO_ID、FLT_GeoidGreaterThan0等

5.13 Joiner

Joiner组件用于连接两张位于不同物理位置的数据源表或文件,一个最常见的情形是连接关系型数据表和平面文件。

Joiner组件命名需遵循: JNR_ 例如:JNR_TRANX

5.14 Lookup

Lookup组件用于根据输入组件传入的条件查找数据库返回需要的数据,并可以传递到后续组件。 Lookup组件有两种用法:connected/ unconnected,connected场景下,Lookup组件需要连接到数据流中的其他组件,而在unconnected场景下,Lookup组件没有连接到任何组件。

Lookup组件unconnected用法,往往都是出于性能考虑,但是需要注意的是unconnected Lookup组件只能返回一个值。

Lookup组件输入端口应以“i_”为前缀,输出端口以“o_”为前缀,需要注意的是此组件中端口的数据类型如需修改则应在其前一组件中修改,而不应在本组件中修改。

? 端口数据类型不匹配是Lookup组件出错的的常见错误,为避免此类型错误,要确保参与比较的端口数据类型一致。

? 如果需要手工改写Lookup组件自动生成的SQL语句,需要注意自动生成的字段顺序不能改

变,并且如果要使用数据库排序,要在语句末尾加“--”字符 Lookup组件命名需要遵循: LKP_ 例如:LKP_TRANSACTION

Page: 25 of 39

Informatica PowerCenter平台 ETL开发规范

6.3 游标尽量少使用

数据库计算的优势在于集合计算,而人为的使用游标使得集合计算演变为单记录计算,这样不仅很难充分利用数据库本身的优化器,而且影响事务处理的原子性。所以对游标有以下建议:

1. 在数据进行清洗的过程中,需使用游标来对脏数据进行清洗; 2. 在数据清洗完成后的业务计算,全部采用集合计算,即不要使用游标;

6.4 异常捕捉

存储过程中,不允许对异常捕捉后不做任何处理(即异常丢失)。 所有的SQL都需要检查其SQLCODE值,并做相应记录。对SQLCODE为非零的情况一定要返回给父进程进行后处理,这部分处理一般有两种方法:其一是标记错误;其二直接出错退出。前者适合一般错误,如字段不符合业务规则等,后者则针对严重错误,如维度表为空。

7. SQL编写规范

7.1 原则定义

1、 要求代码行清晰、整齐,具有一定的可观赏性; 2、 代码编写要充分考虑执行速度最优的原则;

Page: 31 of 39

Informatica PowerCenter平台 ETL开发规范 3、 代码行整体层次分明、结构化强;

4、 代码中应有必要的注释以增强代码的可读性;

7.2 大小写规则

? 所有的SQL语句中的保留字均采用全部大写,不要使用缩写;表别名小写;

如ALL AS CASE CREATE DATABASE DELETE FROM IN INSERT JOIN LEFT NO NOT NULL OUT SELECT TABLE TITLE UPDATE VIEW WHERE 等。 ? 表名、视图名、宏和存储过程名:全部小写; ? 字段名:全部小写;

? 存储过程中的内部变量名,全部小写;

注:ORACLE 建议统一使用大写,Gree

7.3 缩进与换行

整个的SQL语句最好按照子句进行分行编写,SELECT FROM WHERE UPDATE INSERT 等每个关键字都要另起一行 如

? 同一级别的子句间要对齐 ? 逗号放在每行的开头

? 分号放在SQL语句的最后,单独占一行

? 每行宽度不超过120字符(每个字符为8个点阵宽),超过行宽的代码可折行与上行对齐编排; 下面的编写方式不是好的形式:

在所有需要缩进的地方,每次缩进4格;在以下情况下需要缩进: ? 不同层次的SQL语句之间

? SELECT INSERT等关键字之后的字段列表和关键字之间

Page: 32 of 39

Informatica PowerCenter平台 ETL开发规范 7.4 别名

SQL语句别名的命名,分层命名,从第一层次至第四层次,分别用P 、S、 U 、D(都是大写字母)表示,取意为Part, Segment, Unit, Detail。

对于同一层次的多个子句,在字母后加1、2、3、4……区分。 如下图所示:

7.5 运算符前后间隔要求

算术运算符、逻辑运算符的前后至少要保留一个空格,如下图所示:

Page: 33 of 39

Informatica PowerCenter平台 ETL开发规范 7.6 变量引用

? 在SQL语句中引用主机变量(如PERL、SHELL等)时,要在变量名两端加花括号 ? 对日期变量的引用要在单引号内,如'${MYDATE}'

7.7 注释

针对复杂的SQL语句,请尽量增加相应的注释说明,以便自己和其它同事事后可以比较容易的读懂和修改。

注释中应包含以下内容: ? 创建人/创建日期 ? 修改人/修改日期

? 该脚本的编写目的与主要内容

? 如果有特殊处理、特别的技巧等内容,一定要在注释中详细说明 ? 每一大的模块之前要有注释,说明该模块的主要作用 以下是注释必需项:

1. 程序头注释,应说明以下几项:

? 功能 ? 创建日期 ? 创建人

? 修改记录(修改人、修改日期、修改描述) ? 源表 ? 目标表 ? 参数 ? 调用

2. 程序体注释,应说明以下几项:

? 变量声明区 ? 变量初始化区 ? 主程序开始 ? 垃圾回收区

Page: 34 of 39

Informatica PowerCenter平台 ETL开发规范 7.8 其它

对于内连接和外连接的使用,要求该使用外连接的地方都已经使用了外连接,不需要外连接的地方一定不使用外连接。

表中的字段若是从其它表引用的,要确保该字段在被引用的表中存在。 此外,SQL代码中禁止使用 *,必须明确具体字段列表。

8. 脚本编写规范

8.1 UltraEdit

编写SQL 。

8.2 SHELL

9. ETL开发流程

9.1 ETL开发流程

ETL的开发通常会以PDM的一个表或几个相关表为单位,我们称之为JOB。每一个JOB的开发通常会包含以下步骤:

Page: 35 of 39

Informatica PowerCenter平台 ETL开发规范 1) 编写加载说明文档(包括MAPPING文档)

2) 开发初始与日常加载脚本 3) 测试初始与日常加载脚本 4) 编写测试报告

加载说明文档的模板和测试报告的模板因项目而异,格式可以参考每个项目具体的文档模板。 开发时最好以JOB为单位,由易到难,一个JOB结束以后再着手开发下一个JOB。当第一个JOB开发完成之后,由ETL相关负责人员确认文档、脚本等都没有问题以后,再进行下一个JOB的开发。

对于JOB的开发,实行“终身版权制”,在项目结束之前,只要开发人员还在项目中,其开发的JOB出现问题,开发人员拥有最终的解释权,并负责解决出现的问题。

9.2 文档编写要求

必须在文档中注明初始开发变人员与日期、每次变更的人员、变更内容及日期。

开发说明中既要详细说明每一步处理过程,也要概括说明总体的处理思路,用来和具体的处理步骤进行验证。

要说明源数据来自哪个地市、哪个源系统,数据转换的具体过程,包括对数据的所作的转换,所采用的具体方法等,说明对源数据所作的清洗。

10. 版本控制

虽然Informatica提供了Version Control功能,但其版本控制功能是以folder为单位的而不是以Mapping为单位,因此无法对单个mapping进行版本控制。基于这一点,不使用Informatica提供的version Control功能进行版本控制,而使用VAULT、SVN等进行版本控制。

以下是基于Informatica平台开发需要遵循的版本控制流程:

Page: 36 of 39

Informatica PowerCenter平台 ETL开发规范 从VAULT/SVN检出XML文件(加锁) 开发Mapping等对象 导出Mapping等对象到XML文件 将XML文件提交到VALUT/SVN(释放锁)

11. ETL程序迁移

使用Informatica Repository Manager导入和导出功能进行ETL程序迁移,需要检查的项目详见以下文档:

Informatica上线检查清单.xls

在进行程序发布时,当设计到程序覆盖时,需要注意:

? Mapping改动后,可以直接覆盖,但需要检查引用到它的Session是否失效,如果失效,应进

行Validate。

? Mapping覆盖时,注意其中包括的Seq值,不能覆盖目标。

Page: 37 of 39

Informatica PowerCenter平台 ETL开发规范 ? 公用模块、Source、Target的导入,将会影响到引用到它们的所有对象(将会造成大部分对

象失效),所以需要特别谨慎。如果确认需要导入,则在导入后,需要进入系统,找出所有失效对象,进行Validate。

? 一般不需要覆盖的对象,在导入时选择Reuse。 ? 新发布的Mapping,需要将其Seq的初始值改为1。

12. 开发建议

12.1 Source Qualifier

SELECT端口只能为源端口,不得使用SQL函数。 可以写JOIN、WHERE、ORDER BY子句。

保持SQL语句简洁,Mapping中不出现复杂SQL,而是通过Transformation实现。

12.2 Mapping

Mapping保持简洁,一个Mapping只针对一个目标表

12.3 Mapplet

可以重用的转换逻辑放到Mapplet中实现,并添加描述信息。如可供其它开发者使用,通知管理员移至共享文件夹。

12.4 Expression

Expression转换提供了本地变量功能,可以跨行引用数据,在做分区分组处理时非常方便。 使用时需遵循端口顺序: Input ports Variable ports Output ports

本地变量:在引用端口时被引用者仍未被填充,该引用变量的值为上一条数据的值。 所以本地变量端口要放在被引用端口之上,数据流入之前要排序。

本地变量用途:汇总,分区分组汇总,累计,去除重复记录,分区分组标记序号,等等,而且相比rank,aggregator,lookup等有性能优势(需要具体实际测试)。

12.5 Lookup

Lookup有连接和非连接的区别,也有Dynamic和Static的区别(需要研究)。

Page: 38 of 39

Informatica PowerCenter平台 ETL开发规范 Lookup SQL override用途

源和目标发生变化重新导入时,需要特别注意Lookup中是否更新。

12.6 Update Strategy

每个Update Strategy的表达式中最好只包含DD_INSERT、DD_UPDATE、DD_DELETE、DD_REJECT四种标识中的一种,而使用Router分流,INSERT和UPDATE通过不同的PIPELINE进行,以提高性能。

Page: 39 of 39

本文来源:https://www.bwwdw.com/article/st0g.html

Top