共計(jì) 14327 個(gè)字符,預(yù)計(jì)需要花費(fèi) 36 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開通
INFORMATICA 開發(fā)規(guī)范有哪些,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
ETL 研發(fā)運(yùn)維責(zé)任人界定
1)資科內(nèi)部業(yè)務(wù)數(shù)據(jù)流轉(zhuǎn),采取使用方研發(fā)原則,即誰(shuí)取用數(shù)據(jù),誰(shuí)負(fù)責(zé) ETL 版本研發(fā)。目標(biāo)系統(tǒng)運(yùn)維人員進(jìn)行運(yùn)維。
2)對(duì)于業(yè)務(wù)用戶的獨(dú)立管理系統(tǒng),沒有專門研發(fā),由取數(shù)源端研發(fā)負(fù)責(zé) informatica 版本研發(fā)推送數(shù)據(jù)。源端系統(tǒng)對(duì)應(yīng)運(yùn)維人員負(fù)責(zé)對(duì)應(yīng) workflow 運(yùn)維。
3 ETL 研發(fā)數(shù)據(jù)庫(kù)操作約束條件
1)對(duì)于增量同步表,需要源表和目標(biāo)表存在主鍵。
2)增量字段上,需要有索引
3)增量字段(如時(shí)間條件,必須嚴(yán)格順序進(jìn)入數(shù)據(jù)庫(kù),或者增量同步完成后,嚴(yán)格保證增量同步的取數(shù)范圍后續(xù)不會(huì)有數(shù)據(jù)進(jìn)入)
同步場(chǎng)景
同步要求
同步類型
源表和目標(biāo)表是否存在主鍵或者唯一鍵
增量字段上是否有索引(源表和目標(biāo)表)
update 同步
delte 同步
有標(biāo)識(shí)字段增量
存在 pk 或者索引
需要存在索引
需要存在 updatetime 字段,并使用 update 字段 PK 進(jìn)行 update 更新同步。
需要將刪除數(shù)據(jù)寫入臨時(shí)表,etl 同時(shí)同步臨時(shí)表后將目標(biāo)庫(kù)對(duì)應(yīng)數(shù)據(jù)刪除,源端也需要進(jìn)行定期清理臨時(shí)表
源表全量讀取同步
不存在約束或者索引
N/A
N/A
N/A
源表全量讀取同步
存在 pk 或者索引
N/A
N/A
N/A
4 定義
序號(hào)
術(shù)語(yǔ)或縮略語(yǔ)
說(shuō)明性定義
1
ETL
Extraction-Transformation-Loading,數(shù)據(jù)加載
2
Source
源
3
Target
目標(biāo)
4
Transformation
組件
5
Mapping
數(shù)據(jù)映射
6
Mapplet
數(shù)據(jù)映射集,可復(fù)用的 Transformation 組合
7
Session
執(zhí)行任務(wù)
8
Worklet
數(shù)據(jù)工作集
9
Workflow
數(shù)據(jù)工作流
10
Schedule
調(diào)度頻率
11
Parameter
參數(shù)
12
ETLUser
用與 ETL 數(shù)據(jù)同步的數(shù)據(jù)庫(kù)用戶
13
ProductDatabaseSID
生產(chǎn)系統(tǒng)數(shù)據(jù)庫(kù) SID
5 范圍
本文檔讀者包括:
l 項(xiàng)目經(jīng)理;
l 系統(tǒng)管理員;
l DBA 管理員;
l 開發(fā)人員;
l 測(cè)試人員;
l 運(yùn)維人員;
本項(xiàng)目需要使用到的技術(shù):
l ETL 數(shù)據(jù)整合及轉(zhuǎn)換:Informatica;
l 操作系統(tǒng):Linux、Windows
l 數(shù)據(jù)庫(kù):Oracle、Mysql、DB2、MS SQLServer 等
6 系統(tǒng)通用屬性
Service Variable
Description
值
1
$PMRootDir
Infa_share 根目錄
Installation_Directory \server\infa_shared
2
$PMSessionLogDir
Session 運(yùn)行日志目錄
$PMRootDir/SessLogs.
3
$PMBadFileDir
Reject files 拒絕文件目錄
$PMRootDir/BadFiles.
4
$PMCacheDir
Temporary cache files
$PMRootDir/Cache
5
$PMTargetFileDir
Target files 目標(biāo)文件生成目錄
$PMRootDir/TgtFiles
6
$PMSourceFileDir
Source files 平面文件源文件目錄
$PMRootDir/SrcFiles
9
$PMWorkflowLogDir
Workflow logs workflow 執(zhí)行日志目錄
$PMRootDir/WorkflowLogs.
10
$PMLookupFileDir
Lookup files lookup 生成的 cache 目錄
$PMRootDir/LkpFiles.
11
$PMTempDir
臨時(shí)文件目錄
$PMRootDir/Temp
12
$PMStorageDir
HA 時(shí),記錄 workflow 的運(yùn)行狀態(tài)
$PMRootDir/Storage.
7 命名規(guī)則 7.1 通用規(guī)則
以下元素,數(shù)據(jù)庫(kù)表,字段名稱,函數(shù)名稱,函數(shù)表達(dá)式,SQL 語(yǔ)句均采用大寫字母。
7.2 Connection 數(shù)據(jù)源連接 7.2.1 Connection 數(shù)據(jù)連接命名
數(shù)據(jù)鏈接分為源數(shù)據(jù)庫(kù)鏈接與目標(biāo)數(shù)據(jù)庫(kù)鏈接,ETL 的 E(抽取)與 L(加載)的鏈接。
數(shù)據(jù)庫(kù)鏈接方式分為 Native、ODBC 兩種方式:
1)Native 是采用相應(yīng)數(shù)據(jù)的客戶端連接來(lái)抽取、加載數(shù)據(jù),比如 oracle、DB2 等;
2)ODBC 是采用 DataDirect ODBC 的方式連接數(shù)據(jù)庫(kù),比如 mysql、MSSQL。
數(shù)據(jù)連接的命名采用:DataBaseType_ProductDatabaseSID_ETLUSER。
說(shuō)明:DataBaseType 為數(shù)據(jù)源類型,ProductDatabaseSID 生產(chǎn)數(shù)據(jù)庫(kù)的 SID,ETLUser 為用與 ETL 數(shù)據(jù)同步的用戶。
例如: Ora_ASURE_BILETL,連接方式為 Native 方式,Ora 表示數(shù)據(jù)類型為 Oracle,ASURE 為阿修羅生產(chǎn)數(shù)據(jù)庫(kù) SID,BILETL 為 ETL 的操作用戶。
例如:ODBC_ Mysql_ASURE_BILETL,ODBC 表示采用 ODBC 的方式連接。Mysql 為數(shù)據(jù)庫(kù)類型,ASURE 為阿修羅系統(tǒng),BILETL 為 ETL 操作用戶。
7.2.2 數(shù)據(jù)庫(kù)類型對(duì)應(yīng)縮寫
表 5 -1 數(shù)據(jù)庫(kù)類型縮寫
序號(hào)
數(shù)據(jù)源類型
縮寫
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_
7.2.3 生產(chǎn)數(shù)據(jù)庫(kù)的 SID
表 5 -2 數(shù)據(jù)庫(kù)信息表
序號(hào)
數(shù)據(jù)庫(kù)中文名
數(shù)據(jù)庫(kù) SID
備注
1
阿修羅系統(tǒng)
ASURE
2
新車輛管理系統(tǒng)
VMS
3
短信系統(tǒng)
SMSDB
4
7.3 組件命名
表 5 -3 常用組件命名前綴
序號(hào)
組件名稱
圖標(biāo)
命名規(guī)范
含義
1
Source Qualifier
sq_
從數(shù)據(jù)源讀取數(shù)據(jù)
2
Expression
exp_desc
行級(jí)轉(zhuǎn)換
3
Filter
fil_
數(shù)據(jù)過濾
4
Sorter
sort_
數(shù)據(jù)排序
5
Aggregator
agg_
聚合
6
Joiner
jnr_
異構(gòu)數(shù)據(jù)關(guān)接連接
7
Lookup
lkp_
查詢連接
8
Update Strategy
ust_
對(duì)目標(biāo)編輯 insert, update, delete, reject
9
Router
rot_
條件分發(fā)
10
Sequence Generator
sqg_
序列號(hào)生成器
11
Normalizer
nrm_
記錄規(guī)范化
12
Rank
rnk_
對(duì)記錄進(jìn)行 TOPx
13
Union
uni_
數(shù)據(jù)合并
14
Transaction Control
tc_
對(duì)裝載數(shù)據(jù)按條件進(jìn)行事務(wù)控制
15
Stored Procedure
sp_
存儲(chǔ)過程組件
16
Custom
cus_
用戶自定義組件
17
HTTP
http_
WWW 組件
18
Java
java_
Java 自編程組件
7.4 Folder/mapplet/Mapping/Session/Workflow/Schedule 命名
表 5 -4 Folder/mapplet/Mapping/Session/Workflow 命名規(guī)范
情形
名稱
例如
FOLDER
公用文件夾
000_Shared
文件夾
ProductDatabaseSID_OWNER
SFOSS_ EXP5(sfoss 是生產(chǎn)阿修羅數(shù)據(jù)庫(kù) sid,exp5 是我們要操作的表 owner)
MAPPLET
MPL_Business Name
MPL_LRNull
MAPPING
單源單目標(biāo)
M_Target Table Name
M_TT_WAYBILL
多源單目標(biāo)
M_Target Table Name
M_TT_WAYBILL
單源多目標(biāo)
M_1ToN_Function description
M_1ToN__Broadcost
多源多目標(biāo)
M_NToN_Function description
M_NToN_Gather
SESSION
可復(fù)用 post_S_
post_S_ mapping name
post_S_M_STGOMS_ORDERS
可復(fù)用 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_區(qū)域 / 子系統(tǒng)
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_運(yùn)行間隔_(運(yùn)行時(shí)間)_(截止時(shí)間)
每 5 分鐘運(yùn)行一次,2014 年 5 月 6 號(hào)過期
SCHDL_5MIN_Stop20140506
每 5 分鐘運(yùn)行一次,永不過期
SCHDL_5MIN_FOREVER
每天 21:30 運(yùn)行,永不過期
SCHDL_1Day_AT2130_FOREVER
每月 4 號(hào) 21:30 運(yùn)行,永不過期
SCHDL_1MON_4THAT2130__FOREVER
8 創(chuàng)建 Connection 連接
創(chuàng)建 Connection 由 Informatica 管理員完成,但在開發(fā)環(huán)境和測(cè)試中開發(fā)人員有修改 Connection 屬性的權(quán)限。
以創(chuàng)建 Oracle Connection“Ora_ASURE_SFMAP”為例進(jìn)行說(shuō)明
登陸到 Informatica 服務(wù)器,查看對(duì)應(yīng)的 SID“ASURE”是否已經(jīng)添加到 tnsname.ora 文件中,否則在 tnsname.ora 中添加
登陸到 Workflow ManageràConnection(連接)àRelationalàSelect Type =“Oracle”àNew…(按鈕)
8?1 創(chuàng)建 Connection
修改 Connection 連接的權(quán)限,登陸到 Workflow ManageràConnection(連接)àRelationalàObjects:選擇需要修改的 Connection 連接àPermission…(按鈕)à修改屬主。給 Others 組執(zhí)行的權(quán)限。
8?2 修改 Connection 屬主
9 創(chuàng)建文件夾
在創(chuàng)建文件夾前,需要在目標(biāo)數(shù)據(jù)創(chuàng)建用戶 ETLMGR,腳本在文件夾“ETLMGR”中,請(qǐng)按照順序執(zhí)行
9.1 創(chuàng)建文件夾
登陸 Repository Manager 參考第 5 章的命名規(guī)則創(chuàng)建文件夾
操作:FolderàCreateà在彈出的對(duì)話框中輸入文件夾名稱
不關(guān)閉對(duì)話框進(jìn)入下一步
選擇新建文件夾的屬主
9?1 選擇文件夾屬主
9.2 復(fù)制共享對(duì)象
此部分操作由開發(fā)從員完成
登陸 Repository Manager 將文件夾“000_Shared”下的 Mapping“M_GetParam”、“M_getSessionRunStatus”拖拽到新建的文件夾中,并在彈出的創(chuàng)建快捷鏈接對(duì)話框選擇“全部確定”。
9?2 創(chuàng)建共享 Mapping 快捷鏈接
登陸 Workflow Manager 打開新建的文件夾,將文件夾“000_Shared”下的 Session“pre_S”、“post_S”拖拽到新建的文件夾中,并在彈出的復(fù)制對(duì)話框選擇“確定”,
9?3 復(fù)制共享 Session
然后處理 Mapping 沖突,為找不到的 Mapping 重新選擇對(duì)應(yīng)的快捷方式
9?4 Mapping 沖突處理
沖突處理完接提示選擇下一步并確認(rèn),完成這一步驟的操作
登陸到 Workflow Manager 打開新建的文件夾,編輯“post_S”、“pre_S”源和目標(biāo)的 Connection(連接)
9?5 編輯“post_S”
9?6 編輯“pre_S”
10 Mapping 設(shè)計(jì)
注意 1:在進(jìn)行 Mapping 之前,需要在目標(biāo)表數(shù)據(jù)庫(kù)的 ETLMGR.ETL_INCR_PARAM 中插入對(duì)應(yīng)目標(biāo)表相關(guān)的信息,具體內(nèi)容可能過查詢 ETLMGR.ETL_DICT 獲得幫助
注意 2:ETLMGR.ETL_INCR_PARAM.TIME_BEFORE_NOW(增量結(jié)束時(shí)間與當(dāng)前時(shí)間的時(shí)間差,以秒為單位)的值建議不小于 300,以避免一些來(lái)不及 commit 的數(shù)據(jù)會(huì)丟失。
登陸到 Designer,本章所述的所有操作均在 Designer 客戶端。
10.1 導(dǎo)入源和目標(biāo)的表結(jié)構(gòu)
導(dǎo)入源表結(jié)構(gòu)
創(chuàng)建源表的 ODBC 連接
EnableNcharSupport: 默認(rèn)是不打勾的,不打勾的情況下導(dǎo)入 char,varchar,varchar2 會(huì)變成 nchar,nvarchar,nvarchar2
ODBC 連接只是作為導(dǎo)入源表和目標(biāo)表的結(jié)構(gòu)的媒介,不會(huì)進(jìn)行實(shí)際數(shù)據(jù)的處理,實(shí)際數(shù)據(jù)的處理由服務(wù)端 Connection 完成
從 ODBC 連接中導(dǎo)入源表的結(jié)構(gòu)
導(dǎo)入目標(biāo)表結(jié)構(gòu)
導(dǎo)入目標(biāo)表結(jié)構(gòu)與導(dǎo)入源表結(jié)構(gòu)相似,但是要先切換到目標(biāo)表的編輯窗口
10.2 Mapping 設(shè)計(jì)
開發(fā)時(shí)注意查看客戶端左上方的 Folder 顯示,一定要在正確的 Folder 里面工作。
創(chuàng)建 Mapping
展開文件夾“000_Sample”,找到 Mapping“M_for_copy”并將其拖拽到目標(biāo)文件夾,在彈出的對(duì)話框中選擇“Yes”
根據(jù)第五章的命名規(guī)范重命名“M_for_copy”并添加注釋
操作:菜單 MappingàEdit
Comment(注釋) 內(nèi)容填寫如下:
Create date: 日期
Create by: 用戶名(現(xiàn)實(shí)中文名)
Desc: decription 例:用戶信息交換
[
Modify Date:
Modify by: 用戶
Desc: decription 例:過期用戶信息不再交換
]
所有的 Mapping 都添加四個(gè)參數(shù) (Parameter),
操作:在復(fù)制 Mapping 的過程中已經(jīng)創(chuàng)建
$$INCR_START_DT STRING(20) DEFAULT: 1900-01-01 00:00:00 à增量起始時(shí)間 (表示增量區(qū)間的起點(diǎn))
$$INCR_END_DT STRING(20) DEFAULT: 2900-01-01 00:00:00 à增量截至?xí)r間 (表示增量區(qū)間的終點(diǎn))
$$INCR_START_ID DECIMAL(19,0) DEFAULT: 0 à增量起始主鍵值
$$INCR_END_ID DECIMAL(19,0) DEFAULT: 9999999999999999999 à增量截至主鍵值
Mapping 具體設(shè)計(jì)參考文檔《Informatica 覺見場(chǎng)景設(shè)計(jì)》
l 在組件中創(chuàng)建變量時(shí),注意選擇數(shù)據(jù)類型,選擇長(zhǎng)度,在給變量賦值或?qū)⒆兞抠x值給字段時(shí)要保持?jǐn)?shù)據(jù)類型一致,不一致時(shí)要使用顯式類型轉(zhuǎn)換。
l 在做字符處理時(shí),注意 NULL,空字符串和空格的區(qū)別以及不同的判讀和處理方式
l 不需要輸出的端口不勾選 OutputPort。當(dāng)組件中有重名的字段時(shí),輸入的字段在原字段后加 _IN,變量的字段在原字段后加 _V,輸出字段名盡量保持和下一個(gè)組件的輸入字段名名稱一致,以便使用按名稱自動(dòng)連接
l 數(shù)據(jù)加載方式:全量,增量
全量: Truncate Insert
基于時(shí)間的增量(具體實(shí)現(xiàn)方案參考 Informatica 常見場(chǎng)景設(shè)計(jì))
基于主鍵的增量(具體實(shí)現(xiàn)方案參考 Informatica 常見場(chǎng)景設(shè)計(jì))
對(duì)于所有的 Mapping 要求盡量使用增量(增量區(qū)間可優(yōu)先按時(shí)間確定,沒有時(shí)間戳?xí)r按主鍵確定)
對(duì)于數(shù)據(jù)源表確實(shí)無(wú)法提供增量時(shí)間或主鍵的則全量抽取。全量抽取只適用于只適用于數(shù)據(jù)量小的表,如果數(shù)據(jù)表的數(shù)據(jù)量特別大,則需要跟需求方重新確定需求。
10.3 常用組件設(shè)計(jì)說(shuō)明
l Source Qualifier 組件使用:
對(duì)于源系統(tǒng)使用 nvarchar2,導(dǎo)入時(shí)確保在 mapping 中使用 nstring 與之匹配,這樣才能確保字符傳遞的正確性,否則會(huì)出現(xiàn)亂碼,字符被截?cái)嗟葐栴}
如果 Mapping 中存儲(chǔ)存在兩個(gè)及以上的 Source 表,同時(shí)他們來(lái)自相同的源系統(tǒng),盡量使用 Source Qualifier 進(jìn)行關(guān)聯(lián),并在 Source Qualifier 中添加關(guān)聯(lián)條件,而不是用 Joiner 控件
在 Source Qualifier 中添加增量條件:
時(shí)間戳字段 = TO_DATE($$INCR_START_DT,’YYYYMMDD HH24:MI:SS’) And
時(shí)間戳字段 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 組件使用:
對(duì)于大表(大于 500000 行)的連接查詢一定要使用 Joiner
使用 Joiner 控件時(shí),要以小表為 master 表,同時(shí)要對(duì)兩組數(shù)據(jù)進(jìn)行排序,根據(jù) Joiner 的字段進(jìn)行排序,排序一定要使用同一個(gè)方式:升序或降序。此時(shí)控件中的 Sorted input 要打勾
l Lookup 組件使用:
盡量使用有連接的 Lookup,降低性能風(fēng)險(xiǎn)
Lookup 中如果內(nèi)部有 SQL,保證 SQL 的字段順序和 Port 的字段順序一致
如果是無(wú)連接的 Lookup,對(duì)于組件的命名采用 LKP_返回的字段名稱;如果是有連接的 Lookup,如果是返回一個(gè)值,那組件的命名采用 LKP_返回的字段名稱,如果是多個(gè)值,那組件的命名采用 LKP_被查詢表名稱
對(duì)于小表(小于 500000 行)的連接查詢使用 Lookup 控件
對(duì)于 Lookup 維表查找維度 ID 時(shí),需要在輸出字段添加 default value = -1, 如下圖:
Lookup 控件的使用有三種方式, 同時(shí)注意幾點(diǎn)
1: Connect
對(duì)于 mapping 中對(duì)某個(gè)表只查詢一次的盡量使用 Connect Lookup,在使用 Connect lookup 的時(shí)候?qū)τ跊]有用到的 Column 可以刪除掉,防止浪費(fèi) Cache 空間, 一定要使用 Cache –Lookup Caching Enabled
2: Unconnect
對(duì)于 mapping 中對(duì)某個(gè)表查詢多次的盡量使用 Unconnect Lookup, 對(duì)于沒有用到的
字段可以進(jìn)行刪除,防止浪費(fèi) Cache 空間
3: Lookup 函數(shù)
對(duì)于 mapping 中的 Expression 中進(jìn)行查詢的盡量使用 Lookup 函數(shù)
4:Lookup 表最好從 Targets 中獲取,也可以從 Sources 中獲取
5:Lookup 函數(shù)不能在 mapplet 中使用
6:Lookup 使用中的條件允許 Null = Null
l Update Strategy 組件使用:
要求目標(biāo)表有主鍵索引
將 SESSION 的屬性設(shè)置為 UPDATE ELSE INSERT。會(huì)導(dǎo)致 SESSION 的運(yùn)行速度明顯的下降,因?yàn)?INFORMATICA 對(duì)每行記錄都執(zhí)行兩個(gè)操作:更新(根據(jù)主鍵),如果返回的結(jié)果時(shí)更新了 0 條記錄,再執(zhí)行一個(gè)插入操作。
改變這種情況的辦法是,提前知道在 MAPPING 中要執(zhí)行的是 DD_UPDATE,還是 DD_INSERT,然后告訴 UPDATE 控件采用什么更新策略
不能使用 DD_REJECT,可以在 Update Strategy 組件前添加 filter 組件將需要做 DD_REJECT 的數(shù)據(jù)過濾掉
l AGGREGATOR 組件使用:
在使用 Aggregator 前,最好對(duì)數(shù)據(jù)進(jìn)行排序,這樣會(huì)極大提高系統(tǒng)性能,此時(shí) Sorted Input 應(yīng)該打勾
一個(gè) mapping 中最好只用一個(gè) Aggregator 控件。要使用多個(gè) Aggregator 可以考慮使用臨時(shí)表把 mapping 拆開
Aggregator 與 Lookup 控件的一起使用時(shí),每個(gè)控件都需要索引緩沖、數(shù)據(jù)緩沖并且他們共享內(nèi)核里面同樣的 HEAP 段, 這些內(nèi)存區(qū)域是非常關(guān)鍵的,當(dāng)處理的記錄數(shù)量非常巨大時(shí)會(huì)引起內(nèi)存的不穩(wěn)定
當(dāng)包含它的 Mapping 速度比較慢時(shí),可以調(diào)整 Session 中的參數(shù):
Maximum Memory Allowed For Auto Memory Attributes 512M
Maximum Percentage of Total Memory Allowed For Auto Memory Attributes 5%
Worklfow 運(yùn)行的時(shí)候會(huì)從他們中取小的一個(gè)值
11 Workflow 設(shè)計(jì)
開發(fā)時(shí)注意查看客戶端左上方的 Folder 顯示,一定要在正確的 Folder 里面工作。
11?1 查看工作文件夾
Workflow 設(shè)計(jì)概覽:Workflow 設(shè)計(jì)完成后的樣子及各部分功能
11.1 創(chuàng)建 Workflow
登陸到 Repository Manager,打開目標(biāo)文件夾,展開(不是打開)文件夾“000_Shared”,找到 Workflow“WF_for_copy”并將其拖拽到目標(biāo)文件夾,此時(shí)將會(huì)彈出一個(gè)“Copy Wizard”對(duì)話框。在沖突處置中選擇“rename”并按命名規(guī)范重命名。
11?2 按命名規(guī)范重命名
11.2 Workflow 屬性設(shè)置
General(通用),添加注釋
Create date: 日期
Create by: 用戶
Source table: Source table1
Source table2
……
Target table: Target table1
Target table2
……
Desc: decription 例:將廣西用戶信息同步到集團(tuán)
[
Modify Date:
Modify by: 用戶名(現(xiàn)實(shí)中文名)
Desc: decription 例:添加北京用戶信息同步到集團(tuán)
]
Properties(屬性)
Enable HA recovery:打勾
Automatically recover terminated task:打勾
Maximum automatic recovery attemps:5
Schedule
創(chuàng)建可復(fù)用的計(jì)劃
為 Workflow 分配計(jì)劃
11.3 添加可復(fù)用 Session“pre_sql”、“post_sql”
如果在文件夾下找不到 pre_S”、“post_S”,參考復(fù)制共享對(duì)象
將可復(fù)用 Session“pre_S”、“post_S”,添加到在 Workflow 中, 并按命名規(guī)范重命名,如 workflow 名為“WF_M_CJN001”,則 Session 的名稱分別為“pre_ S_M_CJN001”、“post_ S_M_CJN001”
11?3 可復(fù)用 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 設(shè)置 pre_S_* 的日志文件
11.4 編輯 Assignment
設(shè)置 $$TARGET_OWNER,$$TARGER_TABLE 的值
$$TARGET_OWNER = 目標(biāo)表的 owner
$$TARGET_TABLE = 目標(biāo)表名
11?6 編輯 Assignment
12 Session 設(shè)計(jì)
登陸到 Workflow Manager,開發(fā)時(shí)注意查看客戶端左上方的 Folder 顯示,一定要在正確的 Folder 里面工作。
12.1 創(chuàng)建 Session
登陸到 Workflow Manager,,打開 Session 放置的 Workflow
在工具欄的左上角左擊 session 創(chuàng)建圖標(biāo)后松開鼠標(biāo),然后在工作區(qū)任意位置左擊一下彈出 Session 創(chuàng)建對(duì)話框,選擇正確的 mapping,并按照 5.4 規(guī)范命名
12?1 創(chuàng)建 Session
將 Assignment、Sessionpre_S_*、新建的 Session、post_S_* 串聯(lián)
12?2 串聯(lián) Session
12.2 必要 Session 屬性設(shè)置
對(duì)于 Session 的修改和設(shè)置一定去到 Session 工作區(qū)設(shè)置,盡量不要在 Worklet 或者 Workflow 里面做特殊設(shè)置,比如指定表名或者指定用戶名等。
12.2.1 General 屬性
Failed Parent if this task failed:勾選
Treat the input link as: And
12?3 General 屬性設(shè)置
12.2.2 Property 屬性
Session Log File Name:FolderName_SessionName.log,(參照樣例,需要手動(dòng)寫入)
Parameter Filename:
當(dāng) 增量參數(shù)是由 pre_S* 生成的參數(shù)文件控制時(shí):$PMRootDir/BWParam/$$PARAM_FILE(固定值)
當(dāng) 增量參數(shù)不是由參數(shù)文件控制時(shí):留空
Treat Source Rows as, 有幾種類型:1: Insert 2:Update 3:Data driven
對(duì)于目標(biāo)表只有 Insert 的,就選擇,Insert,
對(duì)于目標(biāo)表中存在更新,同時(shí)沒有使用 UpdateStrategy 控件的使用: Update
對(duì)于 Mapping 中使用 UpdateStrategry 控件的使用 Data driven
Commit Interval:默認(rèn)值 10000,當(dāng)單次加載超過 10 0000 行時(shí)將值設(shè)置為 100000
Recovery Strategy:
調(diào)度增量(或者一次全量)超過 500 萬(wàn) 并且 在加載數(shù)據(jù)之前沒有刪除冗余數(shù)據(jù)操作的調(diào)度 選擇:Resume from last checkpoint
其它:Restart task
Enable high precision:勾選
12?4 Properties 屬性設(shè)置
12.2.3 Config Object 屬性
Default buffer block size
當(dāng)運(yùn)行速度較慢時(shí)考慮調(diào)整
Informatica 用來(lái)存儲(chǔ)數(shù)據(jù)的最小單位,默認(rèn)值 12KB。Information 初始化 Session 時(shí),對(duì)每個(gè) Session 分配 2 個(gè) Block 作為初始化分配。如果一行數(shù)據(jù)大于 Block 的大小時(shí)則每一行數(shù)據(jù)均要移動(dòng)多個(gè) Block,影響執(zhí)行效率。建議取一行數(shù)據(jù)最大值的整數(shù)倍作為 Block 的大小。如一行數(shù)據(jù)的大小是 8KB,可以調(diào)整 Default buffer block size 為 24KB 或者 16KB
Maximum Memory Allowed For Auto Memory Attributes
512M 單次取數(shù)介于 500000 行到 2000000
1024M 單次取數(shù)介于 2000000 行到 5000000
Maximum Percentage of Total Memory Allowed For Auto Memory Attributes:10%
以上兩個(gè)參數(shù)通常情況下保留缺省值即可,對(duì)于某些占用內(nèi)存較大的 Mapping 可以考慮增大,最大不能超過 1G, 同時(shí)他們之中取小的值作為最終值
Save session log for these runs:100,保存最近 N 次的運(yùn)行日志
Tips: 菜單— TaskàSession ConfigurationàEditàPropertiesà 將 Save session log for these runs 設(shè)為 100
可修改整個(gè)文件夾所有 session 的“Save session log for these runs”的值
12.2.4 Mapping 屬性 12.2.4.1 Source 屬性
配置源表的連接信息,包括使用的 Connection(連接),源表
12?5 設(shè)置源表的連接信息
檢查源表的過濾條件(可選),默認(rèn)是繼承 mapping 中 Source Qualifier 中的過濾條件一致,在 session 里可以進(jìn)行個(gè)性化設(shè)置
12?6 設(shè)置 Source Filter
12.2.4.2 Target 屬性
Target load type : Bulk/Normal 對(duì)于目標(biāo)表中存在索引的,Target load type 只能選擇 l 裝載方式。默認(rèn)值是 Bulk,本文要求統(tǒng)一設(shè)置成 Normal
Tips: 可在 Workflow Manager 中的 Tools- Options- Miscellaneous 中進(jìn)行初始設(shè)置
Insert: 勾選
Update as Update :勾選,當(dāng)指定的目標(biāo)表中只有 Update 動(dòng)作時(shí),使用
Update as Insert :不勾選,à當(dāng)指定的目標(biāo)表中只有 Insert 動(dòng)作時(shí),使用
Update else Insert:不勾選 à 可用于維表或其它主數(shù)據(jù)表的數(shù)據(jù)增量操作,如果已經(jīng)有 US 更 新策略組件則不用。
Delete :不勾選
Truncate target table option : 通常是全量抽取時(shí),用于目標(biāo)表需要先進(jìn)行清除動(dòng)作時(shí),這個(gè)選項(xiàng)要慎重選擇因?yàn)闀?huì)清空全表的數(shù)據(jù)。默認(rèn)是末被勾選的。
Reject filename: $$REJECT_FILE
Pre Sql 設(shè)置數(shù)據(jù)的重載機(jī)制,根據(jù)情況添加以下腳本
情況 1:按時(shí)間增量基于 delete-insert 方式時(shí)填寫以下語(yǔ)句,否則留空
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 方式時(shí)填寫以下語(yǔ)句,否則留空
Delete from $$TARGET_OWNER.$$TARGET_TABLE
Where (increment column) $$incr_start_ID
And (increment column) = $$incr_end_ID
Commit;
情況 3:全量
留空
Post SQL: 默認(rèn)留空,如果需要在目標(biāo)表加載完成在數(shù)據(jù)庫(kù)執(zhí)行的任務(wù)可自行編寫
Target Table Name: $$TARGET_OWNER.$$TARGET_TABLE
13 從中間庫(kù)取數(shù)據(jù)
從中間庫(kù)取數(shù)據(jù)時(shí)的設(shè)計(jì)需要在中間庫(kù)數(shù)據(jù)加載不及時(shí)的情況下,從中間庫(kù)的源庫(kù)取數(shù)據(jù)來(lái)避免數(shù)據(jù)漏采,所以在 Workflow 中要設(shè)計(jì)兩個(gè) Session 分別能從中間庫(kù)、中間庫(kù)的源庫(kù)抽取數(shù)據(jù)。可復(fù)用 Session‘pre_s_MID’可以生成當(dāng)批次的增量時(shí)間值,并根據(jù)中間庫(kù)取數(shù)據(jù)的及時(shí)情況讓其中一個(gè) Session 空跑。
參考:文件夾 000_Sample 下 WF_M_FOR_MID
注意:以下設(shè)計(jì)只能針對(duì)基于時(shí)間的增量。
13.1 復(fù)制共享對(duì)象
參考復(fù)制共享對(duì)象創(chuàng)建‘M_GetParam_Mid’的快捷方式,復(fù)制’re_S_MID’、’post_S_MID’
13.2 Workflow 設(shè)計(jì)
向目標(biāo)庫(kù)的 ETLMGR.ETL_INCR_PARAM 插入所需的數(shù)據(jù),ETL_INCR_PARAM.SESSON_NAME = S_M_TargetTable
創(chuàng)建 Workflow 時(shí)從 000_Sample 復(fù)制 WF_for_copy_mid 進(jìn)行重命名。參考添加可復(fù)用 Session
添加‘pre_S’,‘pre_S_MID’,‘post_S_MID’
Assignment:跟直接從源庫(kù)數(shù)據(jù)不同,從中間庫(kù)取數(shù)據(jù)時(shí)需要檢查中間庫(kù)的數(shù)據(jù)是否及時(shí),所以要指定中間庫(kù)的源表。
添加可復(fù)用 Session
一致。
pre_S_ M_ TargetTable_MID:由‘pre_S_MID’重命名而來(lái), 屬性設(shè)置與
添加可復(fù)用 Session
一致,但是要指定兩個(gè)源表的 Connection 分別到中間庫(kù)和目標(biāo)庫(kù).
添加可復(fù)用 Session
一致.
S_M_TargetTable_MID:屬性設(shè)置參考
Session 設(shè)計(jì)
,源表的 Connection 指向中間庫(kù)
S_M_TargetTable:屬性設(shè)置參考
Session 設(shè)計(jì)
,源表的 Connection 指向中間庫(kù)的源庫(kù),可能需要向管理員申請(qǐng)對(duì)應(yīng) Connection 的執(zhí)行權(quán)限。
特殊設(shè)置:’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)可以編輯連線的條件
14 寫數(shù)據(jù)到 FTP 文件
可參考文件夾 000_Sample 下 WF_M_FOR_FTP 的 Workflow 的設(shè)計(jì)
FTP Connection: 在幫助文檔的搜索‘FTP Connection’關(guān)鍵字
寫數(shù)據(jù)到 FTP 文件時(shí),由于目標(biāo)不再是數(shù)據(jù)庫(kù),所以不需要在 ETLMGR.ETL_INCR_PARAM 設(shè)置增量參數(shù)的值,也不能在將運(yùn)行日志寫入日志表中。增量的控制一般采用 sysdate(DB 參數(shù)) 來(lái)實(shí)現(xiàn)。建議每 FTP 文件的命名帶上時(shí)間戳并且在 FTP 文件順利生成后寫一個(gè)標(biāo)志文件來(lái)標(biāo)志 FTP 文件順利生成。
15 開發(fā)建議
1) 習(xí)慣點(diǎn)擊 Ctrl+ S 進(jìn)行 Mapping 的保存,避免客戶端崩潰造成的不必要損失
2) 習(xí)慣性的經(jīng)常去 Refresh Mapping 和 Validate Session 和 Workflow,保持 Session 和 Mapping 的一致,保持 Session 的正確可用性
3) 下班前及在進(jìn)行重大修改前對(duì)相關(guān)內(nèi)容做備份,備份操作參考 12 章
16 備份及恢復(fù) 16.1 備份
登陸到 Repository Manager
備份 Workflow
操作:選擇需要備份的 Workflow(結(jié)合 Shift 及 Ctrl 可多選)à右鍵àExport(導(dǎo)出)à選擇保存路徑并填寫文件名稱à點(diǎn)擊保存按鈕
上述操作會(huì)備份 Workflow 及 Workflow 所有子對(duì)象如:Session、Mapping、Source、Target 等
備份 Mapping
操作:選擇需要備份的 Mapping(結(jié)合 Shift 及 Ctrl 可多選)à右鍵àExport(導(dǎo)出)à選擇保存路徑并填寫文件名稱à點(diǎn)擊保存按鈕
上述操作會(huì)備份 Mapping 及 Mapping 的所有子對(duì)象如:Mapping、Mapplet、Source、Target 等
備份其它對(duì)象,參考上述兩種備份操作
16.2 恢復(fù)
登陸到 Repository Manager
操作:菜單 RepositoryàImportant Objectà選擇需要導(dǎo)入的 XML 文件,打開à選擇下一步à選擇需要導(dǎo)入的對(duì)象à選擇并確認(rèn)目標(biāo)文件夾àImportà (有沖突時(shí)會(huì)出現(xiàn)) 處置沖突的解決方法à下一步
Tips:在處置沖突時(shí)可對(duì)多外對(duì)象應(yīng)用相幾的處置方法
14?1 導(dǎo)入對(duì)象時(shí)處置沖突
18 常見問題解決
解決方法:檢查 Workflow、Session 的命名規(guī)范,如 S_M_TCMS_TM_DEPARTMENT 寫成
s_M_TCMS_TM_DEPARTMENT
看完上述內(nèi)容,你們掌握 INFORMATICA 開發(fā)規(guī)范有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!
向 AI 問一下細(xì)節(jié)