INFORMATICA 开发规范有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 ETL研发运维责任人界定 &nbs
INFORMATICA 开发规范有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
ETL研发运维责任人界定
1)资科内部业务数据流转,采取使用方研发原则,即谁取用数据,谁负责ETL版本研发。目标系统运维人员进行运维。
2)对于业务用户的独立管理系统,没有专门研发,由取数源端研发负责informatica 版本研发推送数据。源端系统对应运维人员负责对应workflow运维。
1)对于增量同步表,需要源表和目标表存在主键。
2)增量字段上,需要有索引
3)增量字段 (如时间条件,必须严格顺序进入数据库,或者增量同步完成后,严格保证增量同步的取数范围后续不会有数据进入)
同步场景 | 同步要求 | |||
同步类型 | 源表和目标表是否存在主键或者唯一键 | 增量字段上是否有索引(源表和目标表) | update 同步 | delte同步 |
有标识字段增量 | 存在pk或者索引 | 需要存在索引 | 需要存在updatetime字段,并使用update字段PK 进行update 更新同步。 | 需要将删除数据写入临时表,etl同时同步临时表后将目标库对应数据删除,源端也需要进行定期清理临时表 |
源表全量读取同步 | 不存在约束或者索引 | N/A | N/A | N/A |
源表全量读取同步 | 存在pk或者索引 | N/A | N/A | N/A |
序号 | 术语或缩略语 | 说明性定义 |
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 |
本文档读者包括:
l 项目经理;
l 系统管理员;
l DBA管理员;
l 开发人员;
l 测试人员;
l 运维人员;
本项目需要使用到的技术:
l ETL数据整合及转换:Informatica;
l 数据库:oracle、Mysql、DB2、MS sqlServer等
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. |
以下元素,数据库表,字段名称,函数名称,函数表达式,SQL语句均采用大写字母。
数据链接分为源数据库链接与目标数据库链接,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操作用户。
表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_ |
表5-2 数据库信息表
序号 | 数据库中文名 | 数据库SID | 备注 |
1 | 阿修罗系统 | ASURE | |
2 | 新车辆管理系统 | VMS | |
3 | 短信系统 | SMSDB | |
4 |
表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_ | WWW组件 | |
18 | Java |
| java_ | Java自编程组件 |
表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 | ||
创建Connection由Informatica管理员完成,但在开发环境和测试中开发人员有修改Connection属性的权限。
以创建Oracle Connection“Ora_ASURE_SFMAP”为例进行说明
登陆到Informatica 服务器,查看对应的SID“ASURE”是否已经添加到tnsname.ora文件中,否则在tnsname.ora中添加
登陆到Workflow ManageràConnection(连接)àRelationalàSelect Type = “Oracle”àNew…(按钮)
8‑1 创建Connection
修改Connection连接的权限,登陆到Workflow ManageràConnection(连接)àRelationalàObjects:选择需要修改的Connection连接àPermission…(按钮)à修改属主。给Others组执行的权限。
8‑2 修改Connection属主
在创建文件夹前,需要在目标数据创建用户ETLMGR,脚本在文件夹“ETLMGR”中,请按照顺序执行
登陆Repository Manager 参考第5章的命名规则创建文件夹
操作:FolderàCreateà在弹出的对话框中输入文件夹名称
不关闭对话框进入下一步
选择新建文件夹的属主
9‑1 选择文件夹属主
此部分操作由开发从员完成
登陆Repository Manager将文件夹“000_Shared”下的Mapping“M_GetParam”、 “M_getSessionRunStatus”拖拽到新建的文件夹中,并在弹出的创建快捷链接对话框选择“全部确定”。
9‑2 创建共享Mapping快捷链接
登陆Workflow Manager打开新建的文件夹,将文件夹“000_Shared”下的Session “pre_S”、“post_S”拖拽到新建的文件夹中,并在弹出的复制对话框选择“确定”,
9‑3 复制共享Session
然后处理Mapping冲突,为找不到的Mapping重新选择对应的快捷方式
9‑4 Mapping冲突处理
冲突处理完接提示选择下一步并确认,完成这一步骤的操作
登陆到Workflow Manager打开新建的文件夹,编辑“post_S”、“pre_S”源和目标的Connection(连接)
9‑5编辑“post_S”
9‑6 编辑“pre_S”
注意1:在进行Mapping之前,需要在目标表数据库的ETLMGR.ETL_INCR_PARAM中插入对应目标表相关的信息,具体内容可能过查询ETLMGR.ETL_DICT获得帮助
注意2:ETLMGR.ETL_INCR_PARAM.TIME_BEFORE_NOW(增量结束时间与当前时间的时间差,以秒为单位)的值建议不小于300,以避免一些来不及commit的数据会丢失。
登陆到Designer,本章所述的所有操作均在Designer客户端。
导入源表结构
创建源表的ODBC连接
EnableNcharSupport: 默认是不打勾的,不打勾的情况下导入char,varchar,varchar2会变成nchar,nvarchar,nvarchar2
ODBC连接只是作为导入源表和目标表的结构的媒介,不会进行实际数据的处理,实际数据的处理由服务端Connection完成
从ODBC连接中导入源表的结构
导入目标表结构
导入目标表结构与导入源表结构相似,但是要先切换到目标表的编辑窗口
开发时注意查看客户端左上方的Folder显示,一定要在正确的Folder里面工作。
创建Mapping
展开文件夹“000_Sample”,找到Mapping“M_for_copy”并将其拖拽到目标文件夹,在弹出的对话框中选择“Yes”
根据第五章的命名规范重命名“M_for_copy”并添加注释
操作:菜单MappingàEdit
Comment(注释) 内容填写如下:
Create date: 日期
Create by: 用户名(现实中文名)
Desc: decription 例:用户信息交换
[
Modify Date:
Modify by: 用户
Desc: decription 例:过期用户信息不再交换
]
所有的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 à增量截至主键值
Mapping具体设计参考文档《Informatica觉见场景设计》
l 在组件中创建变量时,注意选择数据类型,选择长度,在给变量赋值或将变量赋值给字段时要保持数据类型一致,不一致时要使用显式类型转换。
l 在做字符处理时,注意NULL,空字符串和空格的区别以及不同的判读和处理方式
l 不需要输出的端口不勾选OutputPort。当组件中有重名的字段时,输入的字段在原字段后加'_IN',变量的字段在原字段后加'_V',输出字段名尽量保持和下一个组件的输入字段名名称一致,以便使用按名称自动连接
l 数据加载方式:全量,增量
全量: Truncate & Insert
基于时间的增量(具体实现方案参考Informatica常见场景设计)
基于主键的增量(具体实现方案参考Informatica常见场景设计)
对于所有的Mapping要求尽量使用增量(增量区间可优先按时间确定,没有时间戳时按主键确定)
对于数据源表确实无法提供增量时间或主键的则全量抽取。全量抽取只适用于只适用于数据量小的表,如果数据表的数据量特别大,则需要跟需求方重新确定需求。
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运行的时候会从他们中取小的一个值
开发时注意查看客户端左上方的Folder显示,一定要在正确的Folder里面工作。
11‑1查看工作文件夹
Workflow设计概览:Workflow设计完成后的样子及各部分功能
登陆到Repository Manager,打开目标文件夹,展开(不是打开)文件夹“000_Shared”,找到Workflow“WF_for_copy”并将其拖拽到目标文件夹,此时将会弹出一个“Copy Wizard”对话框。在冲突处置中选择“rename”并按命名规范重命名。
11‑2按命名规范重命名
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 例:添加北京用户信息同步到集团
]
Properties(属性)
Enable HA recovery:打勾
Automatically recover terminated task:打勾
Maximum automatic recovery attemps:5
Schedule
创建可复用的计划
为Workflow分配计划
如果在文件夹下找不到pre_S”、“post_S”,参考 复制共享对象
将可复用Session “pre_S”、“post_S”,添加到在Workflow中, 并按命名规范重命名,如workflow名为“WF_M_CJN001”,则Session的名称分别为“pre_ S_M_CJN001”、“post_ S_M_CJN001”
11‑3 可复用Session添加到Workflow
修改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 Name:FolderName_SessionName.log
(如:000_Sample_pre_S_M_CJN001.log、 000_Sample_post_S_M_CJN001.log)
11‑5 设置pre_S_*的日志文件
设置$$TARGET_OWNER,$$TARGER_TABLE的值
$$TARGET_OWNER = 目标表的owner
$$TARGET_TABLE = 目标表名
11‑6 编辑Assignment
登陆到Workflow Manager,开发时注意查看客户端左上方的Folder显示,一定要在正确的Folder里面工作。
登陆到Workflow Manager,,打开Session放置的Workflow
在工具栏的左上角左击session创建图标后松开鼠标,然后在工作区任意位置左击一下弹出Session创建对话框,选择正确的mapping,并按照5.4规范命名
12‑1 创建Session
将Assignment、Sessionpre_S_*、新建的Session、post_S_*串联
12‑2 串联Session
对于Session的修改和设置一定去到Session工作区设置,尽量不要在Worklet或者Workflow里面做特殊设置,比如指定表名或者指定用户名等。
Failed Parent if this task failed:勾选
Treat the input link as: And
12‑3 General属性设置
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属性设置
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”的值
配置源表的连接信息,包括使用的Connection(连接),源表
12‑5 设置源表的连接信息
检查源表的过滤条件(可选),默认是继承mapping中Source Qualifier 中的过滤条件一致,在session里可以进行个性化设置
12‑6 设置Source Filter
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
从中间库取数据时的设计需要在中间库数据加载不及时的情况下,从中间库的源库取数据来避免数据漏采,所以在Workflow中要设计两个Session分别能从中间库、中间库的源库抽取数据。可复用Session‘pre_s_MID’可以生成当批次的增量时间值,并根据中间库取数据的及时情况让其中一个Session空跑。
参考:文件夹000_Sample下WF_M_FOR_MID
注意:以下设计只能针对基于时间的增量。
参考复制共享对象创建‘M_GetParam_Mid’的快捷方式,复制’ re_S_MID’、’post_S_MID’
向目标库的 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)可以编辑连线的条件
可参考文件夹000_Sample下WF_M_FOR_FTP的Workflow的设计
FTP Connection:在帮助文档的搜索‘FTP Connection’关键字
写数据到FTP文件时,由于目标不再是数据库,所以不需要在ETLMGR.ETL_INCR_PARAM设置增量参数的值,也不能在将运行日志写入日志表中。增量的控制一般采用sysdate(DB参数)来实现。建议每FTP文件的命名带上时间戳并且在FTP文件顺利生成后写一个标志文件来标志FTP文件顺利生成。
1) 习惯点击Ctrl+S进行Mapping的保存,避免客户端崩溃造成的不必要损失
2) 习惯性的经常去Refresh Mapping和Validate Session和Workflow,保持Session和Mapping的一致,保持Session的正确可用性
3) 下班前及在进行重大修改前对相关内容做备份,备份操作参考12章
登陆到Repository Manager
备份Workflow
操作:选择需要备份的Workflow(结合Shift及Ctrl可多选)à右键àExport(导出)à选择保存路径并填写文件名称à点击保存按钮
上述操作会备份Workflow及Workflow所有子对象如:Session、Mapping、Source、Target等
备份Mapping
操作:选择需要备份的Mapping(结合Shift及Ctrl可多选)à右键àExport(导出)à选择保存路径并填写文件名称à点击保存按钮
上述操作会备份Mapping及Mapping的所有子对象如: Mapping、Mapplet、Source、Target等
备份其它对象,参考上述两种备份操作
登陆到Repository Manager
操作:菜单RepositoryàImportant Objectà选择需要导入的XML文件,打开à选择下一步à选择需要导入的对象à选择并确认目标文件夹àImportà (有冲突时会出现)处置冲突的解决方法à下一步
Tips:在处置冲突时可对多外对象应用相几的处置方法
14‑1 导入对象时处置冲突
解决方法:检查Workflow、Session的命名规范,如'S_M_TCMS_TM_DEPARTMENT'写成
's_M_TCMS_TM_DEPARTMENT'
看完上述内容,你们掌握INFORMATICA 开发规范有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网数据库频道,感谢各位的阅读!
--结束END--
本文标题: INFORMATICA 开发规范有哪些
本文链接: https://lsjlt.com/news/56114.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0