Informatica旗下PowerCenter的元資料庫解析
- 2022 年 8 月 2 日
- 筆記
因客戶需求,最近重拾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裡面詳細資訊,包括源和目標,以及轉換等等。
當然,各種表組合有不一樣的風采,期待更多實用資訊,特此記錄。

