Informatica PowerCenter 开发规范
一、 资料库管理
在资料库的管理过程中,由于各种原因,需要重起资料库服务时,需要通知各位相关人员并在重起时同时重 起Informatica服务。
Folder的建立,由管理员根据业务需求建立,并对其进行授权。建立与用户同名文件夹,
并设置该文件夹的Owner为该用户,且设置其它用户及组只有读权限。(如图 2)
图 2
二、设计规范
1、Source导入
关系数据库:采用ODBC方式读入元数据,且元数据放置位置与ODBC命名有关,本地ODBC命名需与服务器 相同。对于各用户,ODBC命名采用:用户名_SOURCE(例:MM_SOURCE)。ODBC须采用与服务器相同的版本。Oracle 客户端也须与服务器采用相同版本。
文本文件:采用Flat文件导入方式,Flat文件的规范为,第一行为各字段名,第二行开始为数据,各数据 间的分隔符为TAB键。一个通常的做法为,在Excel表格中填入所有数据,直接拷贝至文本中,此时分隔符自动 为TAB键。文本文件的服务器位置,在服务器上分别建立各模块文件夹,各文本文件按模块放置于相应的文件夹 内。文本文件命名为目标表名。
2、Target导入
Target导入存在同样的三种方式:关系数据库、文本文件、XML文件。
Target的元数据管理与Source方式有所不同,其统一放置于Targets下,与本
地ODBC命名无关,需要导入的目标表名唯一。
3、 Mapping建立
1、Normal Create 方式
命名为:m_表名(例:m_MM_PLAN)
2、Slowly Changing Dimensions方式
缓慢变化维方式是的数据加载模式,可以实现表的全历史纪录记录及源表的数据变化后的主键更新方式。开 发中由于实际表需求与数据加载的对接,需要在各种转换后加一个表达式模块(EXP_TARGET),其字段内容 同Target 表,在缓慢变化维前加一个表达式模块(EXP_SOURCE),其字段内容也同Target表,这两个表达式作为 最终的业务 需求转换与数据加载的接口。(如图 3)
在Mapping设计中,使用的各个转换模块,其命名为模块类型名的前三个字母加操作名,查找模块为LKP_ 表名。(例:EXP_CAL、LKP_HRM_DEPT)
图 3
一些各个模块需要注意的设置:
(1)、模块中尽量不要有多余的字段,没有向下流出的字段尽量删除。
(2)、只属于Input型的字段,应去除其O选项;同样只属于Output型的字段,去除其I选项。
(3)、模块中出现需计算的数值字段,其输入默认值设为0(Default Value)。这些字段类型大
小统一改为Decimal (20 6),由于计算的精度不同会造成数值得高精度误差,故统一计
算精度大小,可以避免该错误发生。
(4)、用户在模块中手动添加的字段,Input型的字段,添加前缀INPUT_,Output型的字段添加前缀OUTPUT_。
(5)、SEQ模块在作为公用模块时,即Make Reusable时,设置其Number of Cached Values为1。
(6)、汇总模块的数据输入最好在之前放一个排序模块对数据进行先排序,并选中汇总模块的Sorted Input 选项。
(7)、由于建缓慢变化维产生的Temp表,应在完成后及时删除。
4、Mapplet建立
命名为:ml_操作(例:ml_CAL_ASS)
5、Session建立
命名为:s_m_mapping名(例:s_m_MM_PLAN)
如果Mapping中存在数值计算,则需要在其Session的属性页选中Enable high precision(允许高精度计 算)。
6、 WorkLet建立
命名为:wl_业务名(例:wl_MM_PLAN)
应尽量把业务相关的几个Session建为一个Worklet,统一调度。
7、WorkFlow建立
命名为:wf_业务(例:wf_MM_CODE01、wf_MM_OLTP01)
Scheduler命名为Scheduler_模块名_英文(例:Scheduler_MM_WEEK)
WorkFlow中应尽量少的出现直接的Session,把一些相关性的Session统一作为Worklet,在WorkFlow中调用。
三、 环境发布
在进行发布时,导入的信息,当设计到覆盖时,需要注意:
(1)、Mapping改动后,可以直接覆盖,当需要检查引用到它的Session是否失效,如果失效,应进行Validate。
(2)、Mapping覆盖时,注意其中包括的Seq值,不能覆盖目标。
(3)、公用模块、Source、Target的导入,将会影响到引用到它们的所有对象(将会造成大部分对象失效),所 以需要特别谨慎,如果确认需要导入,则在导入后,需要进入系统,找出所有失效对象,进行Validate。
(4)、一般不需要覆盖的对象,在导入时选择Reuse。
(5)、新发布的Mapping,需要将其Seq的初始值改为1。