Informatica旗下PowerCenter的元数据库解析
因客户需求,最近重拾Informatica下的PowerCenter产品,主要研究数据血缘关系。从PowerCenter本身来看,它是一个功能非常强大,速率非常高效的一款付费的ETL工具,可以满足各种需求,包括对接各种数据源(SAP也可以)、各种应用组件(table、java、file、html)、人性化的监控器、以及各种任务界面等等。同时基于客户端本身,PowerCenter还有自身的存储库,存储Informatica所有的元数据信息,我们在使用PowerCenter进行快捷etl开发时,这些存储库也能满足我们万变的需求。
首先上干货:需求是通过PowerCenter展示数据的血缘关系。在Mapping中有对应的源表和目标表,可以形成有效的简单的血缘关系,当然在EXPRESS中有详细的sql,在此暂不解读这个sql的血缘关系。
解决:通过对PowerCenter元数据数据表之间关联,可以拿到Folder下面所有Mapping里面的源和目标信息,关联表即可显示对应的数据流向。
具体SQL如下:
1 SELECT 2 t.SUBJ_ID, 3 t.SUBJ_NAME,--文件名 4 t.SUBJ_DESC, 5 t1.MAPPING_ID, 6 t1.MAPPING_NAME, --映射名 7 t3.SRC_ID, 8 t3.SOURCE_NAME, --源表名 9 t4.TARGET_ID, 10 t4.TARGET_NAME --目标表名 11 FROM OPB_SUBJECT t 12 LEFT JOIN OPB_MAPPING t1 ON t.SUBJ_ID = t1.SUBJECT_ID 13 LEFT JOIN OPB_DBDS t2 ON t1.MAPPING_ID = t2.MAPPING_ID 14 LEFT JOIN OPB_SRC t3 ON t2.DBD_ID = t3.DBDID 15 LEFT JOIN ( 16 SELECT 17 DISTINCT 18 t.MAPPING_ID, 19 t.MAPPING_NAME, 20 t3.TARGET_ID, 21 t3.TARGET_NAME 22 FROM OPB_MAPPING t 23 LEFT JOIN OPB_TDS t1 ON t.MAPPING_ID = t1.MAPPING_ID 24 LEFT JOIN OPB_WIDGET_INST t2 ON t1.MAPPING_ID = t2.MAPPING_ID AND t1.TARGET_INSTANCE_ID = t2.INSTANCE_ID 25 LEFT JOIN OPB_TARG t3 ON t2.WIDGET_ID = t3.TARGET_ID 26 WHERE t.IS_VISIBLE = 1 AND t2.WIDGET_TYPE = 2 AND t3.IS_VISIBLE = 1 27 ) t4 ON t1.MAPPING_ID = t4.MAPPING_ID 28 WHERE t1.IS_VISIBLE = 1 AND t3.IS_VISIBLE = 1 29 AND t.SUBJ_NAME = 'DW' AND t1.MAPPING_ID = '452' --具体条件,可注释
结果如下:
解决上述需求,顺便把PowerCenter元数据库里大部分常见的,且非常有用的表及视图介绍一下。基于这些东西,我们即可以根据不同的需求查出自己需要的数据,也可以开发一些辅助的Infa应用程序。
OPB_ATTR:
INFORMATICA(Designer,Workflow等)设计时及服务器设置的所有属性项的名称,当前值及
该属性项的简要说明
例如:ATTR_NAME:Tracing Level
ATTR_VALUE:2
ATTR_COMMENT:Amount of detail in the session log
用途:可以通过该表快速查看到设计或设置时碰到的一些属性项的用途与说明
OPB_ATTR_CATEGORY:
INFORMATICA各属性项的分类及说明
例如:CATEGORY_NAME:Files and Directories
DESCRIPTION:Attributes related to file names and directory locations
用途:查看上表所提的属性项的几种分类及说明
OPB_CFG_ATTR:
WORKFLOW MANAGER中的各个Folder下的Session Configuration的配置数据,每个配置对应表中一组Config_Id相同的数据,一组配置数据共23条
例如:ATTR_ID:221
ATTR_VALUE:$PMBadFileDir
用途:查看所有的SessionConfiguration的配置项及值,并方便的进行各个不同Folder间的配置异同比较
OPB_CNX:
WORKFLOW MANAGER中关于源、目标数据库连接的定义,包括Relational Connection,Queue Connection,Loader Connection等
例如:OBJECT_NAME:Orace_Source
USER_NAME:oral
USER_PASSWORD:` 53S{$+*$*[X]
CONNECT_STRING:Oratest
用途:查看在WorkFlow Manager中进行配置的所有连接及其配置数据
OPB_CNX_ATTR:
上表所记录的所有数据库连接的一些相关属性值,一种属性值一条数据。例如对于Relational Connection类的连接,有附加三个属性,对应该表则有三条记录,分别记录其Rollback Segment, Environment SQL, Enable Parallel Mode的属性值,分别对应ATTR_ID为10,11,12
例如:OBJECT_ID:22
ATTR_ID:10
ATTR_VALUE:1(代表Enable Parallel Mode为选中)
VERSION_NUMBER:1
用途:查看所有配置好的连接的相关属性值,及一些环境SQL及回滚段设置,方便统一查看及比较
OPB_DBD:
INFORMATICA DESIGNER中所有导入的源的属性及位置
例如:DBSID:37
DBDNAM:DSS_VIEW
ROOTID:37
用途:关联查看所有源的属性
OPB_DBDS:
INFORMATICA MAPPING中所引用的源,即Mapping与上表中源的对应关系
例如: MAPPING_ID:3
DBD_ID:4
VERSION_NUMBER:1
用途:查看一个定义了的源被哪些Mapping引用过,作为他的源或给出Mapping名,根据OPB_MAPPING表关联,可以查看该Mapping引用到哪些源
OPB_EXPRESSION:
INFORMATICA DESIGNER 中所有定义了的表达式
例如:WIDGET_ID:1003
EXPRESSION:DECODE(IIF(TYPE_PLAN != '05',1,0),1,QTY_GROSS,0)
用途:通过与OPB_WIDGET表关联,查看整个元数据库中的所有Expression转换模块中的表达式定义
OPB_EXTN_ATTR:
WORKFLOW MANAGER中的 Edit Tasks时的Mapping页中,选中Targets时,其相关属性的设置值。每个属性值一条记录。
例如:ATTR_ID:2
ATTR_VALUE:ora_test1.bad
用途:通过关联直接查看所有Session的相关目标表数据加载设置
OPB_FILE_DESC:
INFORMATICA中所有文本文件的读入规则定义,如分隔符等
例如:STR_DELIMITER:11,
FLD_DELIMITER:9,44,0
CODE_PAGE:936
用途:查看系统中不同的文本的规则定义Informatica的元数据包括了我们在开发与配置时所碰到的所有数据,当然理论上我们可以通过直接修改数据库值来更改设置,但列出这些表的用途,仅是给大家一个查看信息的简便方法,即使对元数据库很熟了,也强烈建议不要直接修改元数据表的值,而应该通过Informatica工具来进行更改。
OPB_GROUPS:
INFORMATICA中所有组的定义
例如:GROUP_ID:2
GROUP_NAME:Administrators
用途:查看当前系统中所设置的所有组
Informatica的元数据包括了我们在开发与配置时所碰到的所有数据,当然理论上我们可以通过直接修改数据库值来更改设置,但列出这些表的用途,仅是给大家一个查看信息的简便方法,即使对元数据库很熟了,也强烈建议不要直接修改元数据表的值,而应该通过Informatica工具来进行更改。
OPB_MAPPING:
INFORMATICA中所有Mapping的存储,并存储着Mapping的一些如最后一次存储时间、说明等属性信息例如:MAPPING_NAME:m_PM_COUNT_BILL
MAPPING_ID:1521
LAST_SAVED:03/27/2006 20:00:24
用途:这张表的用途非常大,可以通过本表数据的查询,得出如某个时间以后修改过的所有Mapping,所有失效了的Mapping,这个表的更大作用是和其他表作关联,得出更多Mapping相关的信息
OPB_MAP_PARMVAR:
INFORMATICA中Mapping的所有参数的定义,及其初始值等相关信息
例如:MAPPING_ID:1538
PV_NAME:$$DP_ENABLE_RAND_SAMPLING
PV_DEFAULT:0
用途:查看系统作所设置的所有参数信息,与OPB_MAPPING关联可以根据所给出的Mapping名查看该Mapping下所设置的所有参数信息
OPB_METAEXT_VAL:
IINFORMATICA元数据扩展信息,记录了在设计中,所扩展的所有元数据相关信息
以下是某个Session的元数据扩展
例如:METAEXT_NAME:COMMENT
OBJECT_TYPE:68(Session)
PM_VALUE:The Link's Main Table,Design by Jack
用途:查看在设计中所有扩展了的元数据信息,通过关联可以查看指定对象的元数据扩展信息,帮助集中查看了解设计过程中的一些信息
OPB_OBJECT_TYPE:
INFORMATICA设计中所有对象的定义表
例如:OBJECT_TYPE_ID:1
OBJECT_TYPE_NAME:Source Definition
用途:可以查看到现在INFOMATICA所定义了的所有对象,可作为其他表的关联维表,查看某个对象的所有相关信息
OPB_PARTITION_DEF:
SESSION中所有的PARTITION定义
例如:SESSION_ID:2578
PARTITION_NAME:Partition #1
用途:通过关联,根据Session的名称,查出该Session所包含的所有Partition设置
OPB_REPOSIT:
INFORMATICA REP服务器配置相关信息
例如: DATAVERSION: 5002
PEPOSIT_NAME:hnsever
用途:查看INFORMATICA REP服务器配置信息
OPB_REPOSIT_INFO:
INFORMATICA REP数据库连接配置信息
例如: REPOSITORY_NAME: TEST-REP
DB_USER:infa_user
DB_NATIVE_CONNECT:infa_conn
HOSTNAME:hnsever
PORTNUM:5001
用途:查看INFORMATICA REP服务器数据库连接配置信息
OPB_SCHEDULER:
WORKFLOW中的所有SCHEDULER设置信息表
例如:SCHEDULER_ID:81
SCHEDULER_NAME:Scheduler_DAY_10
START_TIME:3/13/2005/00/20
用途:该表记录了所有的SCHEDULER信息,以及它的各项属性设置,方便整体进行考虑各个SCHEDULER间的调度配合
OPB_SERVER_INFO:
INFORMATICA SEVER 服务器配置信息
例如:SERVER_NAME:INFA_SEVER
TIMEOUT:300
HOSTNAME:hnsever
PORT_NO:4001
IP_ADDRESS:196.125.13.1
用途:查看INFORMATICA SEVER服务器配置信息
OPB_SESSION:
WORKFLOW中的所有Session,记录了Session与Mapping的对应关系及Session相关的一
些基本属性
例如:SESSION_ID:11
MAPPING_ID:3
用途:查看Session与Mapping对应关系,通过关联得出Session名与Mapping名的对应
OPB_SESSION_CONFIG:
记录了WORKFLOW中所有Session的Config配置信息
例如:CONFIG_NAME:default_session_config
COMMENTS:Default session configuration object
用途:查看当前系统中所有配置了的Session Config信息
OPB_SESS_FILE_REF:
INFORMATICA抽取过程中的所有Flat File与Session的相关关系定义
例如: SESSION_ID: 682
FILE_ID:66
用途:查看整个系统中的Flat File源的相关情况
OPB_SESS_FILE_VALS:
系统中所有Flat File文件的具体情况,包括文件名、路径等
例如: SESSION_ID: 1560
FILE_NAME: PTM_LU_CHILD.txt
DIR_NAME: $PMSourceFileDirPTM
用途:通过关联可以查看到Session相关的Flat文件名及其路径,以及查看系统所有相关Flat文件及统计
OPB_SESS_TASK_LOG:
这是INFORMATICA对于Session运行的所有日志的信息记录,并且记录下Session的出错情况。
例如:INSTANCE_ID:6
MAPPING_NAME:m_ASSET_SUB_ACCOUNT
LOG_FILE:C:Program Files......s_ASSET_SUB_ACCOUNT.log
FIRST_ERROR_MSG:No errors encountered.
用途:这是在查Session运行情况的最终要的表之一,可以最简便的得到Session是否运行正常及当初错时的首个错误简要信息,以及日志文件的位置
OPB_SRC:
INFORMATICA DESIGNER中所定义的所有源
例如:SRC_ID:12
SUBJ_ID:27
FILE_NAME:AM_EQP_ASSESS
SOURCE_NAME:AM_EQP_ASSESS
用途:通过Subj_Id的关联,可以查出每个Folder中所有定义了的源,一般和OPB_DBDS通过DBD_ID关联得到源详细信息
OPB_SRC_FLD:
INFORMATICA中源表的所有字段的定义
例如:FLDID:82
SRC_ID:12
SRC_NAME:FLAG_ID
用途:关联上表,得出该源表的所有字段,及其定义和相关属性值
OPB_SRV_LOC_VARS:
INFORMATICA系统服务器配置中,所有的系统变量及变量的当前值
例如:VAR_ID:13
VAR_NAME:$PMRootDir
VAR_VALUE:D:Program FilesInformatica PowerCenter 7.1.1Server
用途:查看当前服务器的所有系统变量及其当前值
OPB_SUBJECT:
INFORMATICA中所有主题定义,即所有Folder的定义及相关属性
例如:SUBJ_NAME:OAM
SUBJ_ID:2
GROUP_ID:3
用途:Folder的ID是其他很多表的外键,作为其他表的关联,可以查看该Folder下的所有相关对象信息
OPB_SWIDGET_INST:
记录一个Session中所用到的Mapping引用到的所有对象及其相关属性,即细到每个转化模块一条记录
例如:SESSION_ID:11
MAPPING_ID:3
INSTANCE_NAME:LKP_OTHER_CHECK11
PARTITION_TYPE:1
用途:查看每个Session所引用到的所有对象,及其当前的属性值
OPB_SWIDGINST_LOG:
INFORMATICA运行后,所有运行了的Session中相关源及目标对象的运行日志,即运行的时间,抽取的数据成功条数等
例如:TASK_INSTANCE_ID:92
PARTITION_ID:1
PARTITION_NAME:Partition#1
WIDGET_NAME:SQ_SHIFT_CODE
APPLIED_ROWS:723
START_TIME:2004-11-4 8:48:12
END_TIME:2004-11-4 8:48:31
用途:这是INFORMATICA运行后,对每个对象的运行情况的最详细的日志记录,对于数据正确性的检查,性能的调优等有着很重要的参考价值
OPB_SWIDG_GROUP:
在INFORMATICA DESIGNER中Union_Transformation模块上的所有Group的定义表
例如:SESSION_ID:1410
GROUP_NAME:PM_GROUP1
用途:该表单独记录了Union_Transformation模块上所有设置了的Group,可以通过关联查出一个Session上所有的Union Group定义
OPB_TABLE_GROUP:
在INFORMATICA DESIGNER 中Router Transformation模块上的所有Group的定义表.
例如:OBJECT_ID:3409
ATTR_VALUE: FROM_ID = 'xx'
用途:该表单独记录了Router Transformation模块上所有设置了的Group,以及Group的分组条件,可以通过关联查处出一个Mapping中Route r
的所有分组设置及其分组条件
OPB_TARG:
在INFORMATICA DESIGNER中所有目标表的定义,
例如:TARGET_ID:3
SUBJ_ID:2
TARGET_NAME:HAM_DEPT
用途:该表存储了所有的目标表定义,通过关联可以查出某个Folder下所有的目标表定义
一般和OPB_TDS、OPB_WIDEGT_INST通过INSTANCE_ID关联得到目标表信息,详细可参考开头sql信息
OPB_TABLE_GROUP:
在INFORMATICA DESIGNER中Router Transformation模块上的所有Group的定义表.
例如:OBJECT_ID:3409
ATTR_VALUE: FROM_ID='xx'
用途:该表单独记录了RouterTransformation模块上所有设置了的Group,以及Group的分组条件,可以通过关联查处出一个Mapping中Router的所有分组设置及其分组条件
OPB_TARGINDEX:
在INFORMATICA中对目标表,可进行Index的定义,该表存储了所有目标表Index的定义
例如:TARGET_ID:1626
INDEXNAME: IDX_AUDIT
用途:查出所有在INFORMATICA中进行的Index定义,及相关目标表信息
OPB_TARGINDEXFLD:
INFORMATICA中目标表上进行了Index定义的相关的所有字段
例如:INDEXID:6
FLDNAME: AREC_BILL_ID
用途:进行关联查出在INFORMATICA中进行了Index定义的表及其字段
OPB_TARG_FLD:
INFORMATICA中所有目标表的字段信息
例如:TARGET_ID:131
TARGET_NAME:CHECK_PROPERTY
用途:查看目标表的所有字段信息,或给出字段名,查找该字段在那些目标表中出现过
OPB_TASK:
WORKFLOW中所有Task的记录,包括Session,Worklet,WorkFlow等
例如:TASK_ID:1717
TASK_NAME:s_OAM_LOG_ARR
用途:该表是Workflow关于Task的记录的主表,通过关联可以查出某个folder下所包含的所有Workflow、Worklet、Task等,以及查出一个Workflow下的所有Task
OPB_TASK_ATTR:
该表记录了Task的所有属性值,每个属性一条记录
例如:ATTR_ID:2
ATTR_VALUE:s_AM_ASSET_TYPE.log
用途:查看相关Task的属性设置,查找系统中同一属性设置的所有Task
OPB_TASK_INST:
Task实例表,与OPB_TASK表信息类似,但该表主要突出的是Workflow与Task的关系,而OPB_TASK表是Task的基表
例如:WORKFLOW_ID:9
INSTANCE_NAME: s_USED_KIND
用途:查找一个Workflow下的所有Task信息
OPB_TASK_INST_RUN:
该表记录了所有Task每次运行的日志信息,包括当前的运行起始时间,服务名等
例如:INSTANCE_NAME:s_ASSET_ACCOUNT
START_TIME:2004-11-3 15:20:01
END_TIME:2004-11-3 15:20:08
SERVER_NAME:ETL-SVR
用途:该表记录了Task每次运行的日志信息,其中关于时间的信息对于性能调优有着极其重要的作用,也可以观察同一个Task,一段时间的运行效果,评估服务器的运行情况等
OPB_TASK_VAL_LIST:
该表记录了某些Task中的属性值,例如Command Task中的Command值
例如:TASK_ID:2990
PM_VALUE:DEL “D:FILE_LIST.TXT”
VAL_NAME:DELETE
用途:可以查看当前系统中设置的任务属性值,也可查看所有的Command的命令值
OPB_USERS:
该表记录了Rep Manager中所设置的所有用户,及其相关属性
例如:USER_ID:5
USER_NAME:DEMO
USER_PASSWD:hG63"4$7.`
USER_PRIVILEGES1:79
用途:可以查看系统中INFORMATICA所定义了的所有用户及相关属性
OPB_USER_GROUPS:
该表记录了Rep Manager中用户与组的关系
例如:USER_ID:2
GROUP_ID:3
用途:查看一个组中存在哪些用户,或关联出每个用户到底属于哪个组
OPB_VALIDATE:
该表纪录Designer或Workflow Manager中设计开发时,所有Validate的信息
例如:OBJECT_ID:4
INV_COMMENTS:Replaced source [V_RCT_CREDIT] during import.
用途:查看同一个对象的历史Validate信息,查看对象的修改历程
OPB_VERSION_PROPS:
该表纪录了系统中各种对象的当前版本信息,最后的修改时间。包括最小到各个Mapping中的各个模块的当前版本信息。
OPB_VALIDATE:
该表纪录Designer或Workflow Manager中设计开发时,所有Validate的信息
例如:OBJECT_ID:4
INV_COMMENTS:Replaced source [V_RCT_CREDIT] during import.
用途:查看同一个对象的历史Validate信息,查看对象的修改历程
OPB_VERSION_PROPS:
该表纪录了系统中各种对象的当前版本信息,最后的修改时间。包括最小到各个Mapping中的各个模块的当前版本信息。
例如:OBJECT_ID: 5
OBJECT_NAME: FLT_CLM_BDL
LAST_SAVED: 08/20/2006 22:52:29
用途:查看系统中各模块对象的最后更改时间。
OPB_WFLOW_VAR:
该表纪录了Workflow的中,各个系统变量的定义,是Workflow设计过程中,所有各模块间系统变量的设计纪录
例如:SUBJECT_ID:2
VAR_NAME:ErrorMsg
VAR_DESC:Error message for this task's execution
LAST_SAVED: 08/20/2006 22:38:41
用途:查看Workflow中相应的系统变量的设计
OPB_WIDGET:
该表是所有Mapping中的所有转换模块的基础信息表,记录了每个转换模块的基础信息
例如:WIDGET_NAME:AGG_PIM_RES
WIDGET_TYPE:9
IS_REUSABLE:0
用途:可以与其他表进行关联,按条件查出需要各个基础的转换模块
OPB_WIDGET_ATTR:
该表是OPB_WIDGET的子表,记录了每一个转换模块的各种属性值。一个模块的一个属性占一条记录。
例如:WIDGET_ID: 2
WIDGET_TYPE:11
ATTR_VALUE:$PMCacheDir
用途:该表纪录了所有的转换模块的所有属性值,是在做某属性查找时非常有用的一个基础表,通过与其他表的关联即可得出同一设置的所有转换模块的信息
OPB_WIDGET_FIELD:
该表纪录了各个转换模块中所有字段的定义
例如:WIDGET_ID:4
FIELD_NAME:IN_PL_CD
WGT_PREC:10
WGT_DATATYPE:12
用途:可以实现对某个字段名称的统计与查找
OPB_WORKFLOW:
该表是Workflow定义的一个基表,记录下Workflow的关系信息
例如:WORKFLOW_ID:6
SERVER_ID:0
SCHEDULER_ID:3
用途:该表主要可以用于作关于Workflow的各种相关查找的关联表
REP_DB_TYPES:
该表记录了INFA所支持的数据库的类型
例如:DATYPE_NUM:3
DATYPE_NAME:ORACLE
用途:该表是系统的一个基础代码表,用于显示INFA所支持的所有数据库类型
REP_FLD_DATATYPE:
该表记录了INFA所支持的各种数据类型以及INFA所支持的各种数据库的数据类型
例如:DTYPE_NUM:3001
DTYPE_NAME:char
DTYPE_DATABASE:ORACLE
用途:该表是系统的一个基础代码表,用于显示INFA所支持的所有数据类型
REP_SRC_KEY_TYPES:
该表记录了INFA在源定义中所设定的所有键值类型
例如:KEYTYPE_NUM:1
KEYTYPE_NAME:PRIMARY KEY
用途:该表是系统的一个基础代码表,用于显示INFA源设计中,所有支持的键值类型
REP_TARG_KEY_TYPES:
该表记录了INFA在目标定义中所设定的所有键值类型
例如:KEYTYPE_NUM:2
KEYTYPE_NAME:FOREIGN KEY
用途:该表是系统的一个基础代码表,用于显示INFA目标设计中,所有支持的键值类型
REP_TARG_TYPE:
该表记录了INFA的目标表类型
例如:TARGET_TYPE:1
TYPE_NAME:DIMENSION
用途:表是系统的一个基础代码表,用于显示INFA设计中,所有支持的目标表类型
除以上这些常用的表外,还有一些常用的视图信息:
REP_ALL_MAPPINGS:
该视图记录了所有Mapping映射信息
REP_ALL_SCHEDULERS:
该视图记录了所有SCHEDULERS调度信息
REP_ALL_SOURCES:
该视图记录了所有SOURCES源表信息
REP_ALL_SOURCE_FLDS:
该视图记录了所有SOURCES源表字段信息
REP_ALL_TARGETS:
该视图记录了所有TARGETS目标表信息
REP_ALL_TARGET_FLDS:
该视图记录了所有TARGETS目标表字段信息
REP_TBL_MAPPING:
该视图记录了所有Mapping里面详细信息,包括源和目标,以及转换等等。
当然,各种表组合有不一样的风采,期待更多实用信息,特此记录。