INFORMATICA 開發規範
目 錄
Informatica開發規範.... 1
目 錄.... 2
1 編寫目的.... 4
2 ETL研發責任人界定.... 4
3 ETL 研發資料庫操作約束條件.... 4
4 定義.... 4
5 範圍.... 5
6 系統通用屬性.... 6
7 命名規則.... 6
7.1 通用規則... 6
7.2 Connection 資料來源連線... 6
7.2.1 Connection 資料連線命名... 6
7.2.2 資料庫型別對應縮寫... 6
7.2.3 生產資料庫的SID.. 7
7.3 元件命名.... 7
7.4 Folder/mapplet/Mapping/Session/Workflow/Schedule命名.... 9
8 建立Connection連線.... 9
9 建立資料夾.... 10
9.1 建立資料夾... 10
9.2 複製共享物件... 11
10 Mapping設計.... 13
10.1 匯入源和目標的表結構... 14
10.2 Mapping設計... 16
10.3 常用元件設計說明... 17
11 Workflow設計.... 19
11.1 建立Workflow.. 20
11.2 Workflow屬性設定... 20
11.3 新增可複用Session “pre_sql”、“post_sql”. 22
11.4 編輯Assignment. 23
12 Session設計.... 23
12.1 建立Session.. 24
12.2 必要Session屬性設定... 24
12.2.1 General屬性... 24
12.2.2 Property屬性... 24
12.2.3 Config Object屬性... 25
12.2.4 Mapping屬性... 26
12.2.4.1 Source 屬性... 26
12.2.4.2 Target屬性... 27
13 從中間庫取資料.... 28
13.1 複製共享物件... 28
參考複製共享物件建立‘M_GetParam_Mid’的快捷方式,複製’ pre_S_MID’、’post_S_MID’ 28
13.2 Workflow設計... 28
14 開發建議.... 30
15 備份及恢復.... 30
15.1 備份... 30
15.2 恢復... 31
16 參考文件.... 31
17 常見問題解決.... 31
1 編寫目的
本文件旨在本次專案中實施,Informatica工具所涉及到的資料連線,命名規範和工作開發規範方面的規定和指引,統一開發習慣,以便在開發過程中能起到事半功倍的效果。
2 ETL研發運維責任人界定
1)資科內部業務資料流轉,採取使用方研發原則,即誰取用資料,誰負責ETL版本研發。目標系統運維人員進行運維。
2)對於業務使用者的獨立管理系統,沒有專門研發,由取數源端研發負責informatica 版本研發推送資料。源端系統對應運維人員負責對應workflow運維。
3 ETL 研發資料庫操作約束條件
1)對於增量同步表,需要源表和目標表存在主鍵。
2)增量欄位上,需要有索引
3)增量欄位 (如時間條件,必須嚴格順序進入資料庫,或者增量同步完成後,嚴格保證增量同步的取數範圍後續不會有資料進入)
同步場景 |
同步要求 |
|||
同步型別 |
源表和目標表是否存在主鍵或者唯一鍵 |
增量欄位上是否有索引(源表和目標表) |
update 同步 |
delte 同步 |
有標識欄位增量 |
存在pk或者索引 |
需要存在索引 |
需要存在updatetime欄位,並使用update欄位PK 進行update 更新同步。 |
需要將刪除資料寫入臨時表,etl同時同步臨時表後將目標庫對應資料刪除,源端也需要進行定期清理臨時表 |
源表全量讀取同步 |
不存在約束或者索引 |
N/A |
N/A |
N/A |
源表全量讀取同步 |
存在pk或者索引 |
N/A |
N/A |
N/A |
4 定義
序號 |
術語或縮略語 |
說明性定義 |
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 |
|
|
|
5 範圍
本文件讀者包括:
l 專案經理;
l 系統管理員;
l DBA管理員;
l 開發人員;
l 測試人員;
l 運維人員;
本專案需要使用到的技術:
l ETL資料整合及轉換:Informatica;
l 作業系統:Linux、Windows
l 資料庫:Oracle、Mysql、DB2、MS SQLServer等
6 系統通用屬性
|
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. |
7 命名規則
7.1 通用規則
以下元素,資料庫表,欄位名稱,函式名稱,函式表示式,SQL語句均採用大寫字母。
7.2 Connection 資料來源連線
7.2.1 Connection 資料連線命名
資料連結分為源資料庫連結與目標資料庫連結,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操作使用者。
7.2.2 資料庫型別對應縮寫
表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_ |
|
|
|
7.2.3 生產資料庫的SID
表5-2 資料庫資訊表
序號 |
資料庫中文名 |
資料庫SID |
備註 |
1 |
阿修羅系統 |
ASURE |
|
2 |
新車輛管理系統 |
VMS |
|
3 |
簡訊系統 |
SMSDB |
|
4 |
|
|
|
7.3 元件命名
表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 |
|
http_ |
WWW元件 |
18 |
Java |
|
java_ |
Java自程式設計元件 |
7.4 Folder/mapplet/Mapping/Session/Workflow/Schedule命名
表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 |
|
|
|
|
|
8 建立Connection連線
建立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屬主
9 建立資料夾
在建立資料夾前,需要在目標資料建立使用者ETLMGR,指令碼在資料夾“ETLMGR”中,請按照順序執行
9.1 建立資料夾
- 登陸Repository Manager 參考第5章的命名規則建立資料夾
操作:FolderàCreateà在彈出的對話方塊中輸入資料夾名稱
不關閉對話方塊進入下一步
- 選擇新建資料夾的屬主
9‑1 選擇資料夾屬主
9.2 複製共享物件
此部分操作由開發從員完成
- 登陸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”
10 Mapping設計
注意1:在進行Mapping之前,需要在目標表資料庫的ETLMGR.ETL_INCR_PARAM中插入對應目標表相關的資訊,具體內容可能過查詢ETLMGR.ETL_DICT獲得幫助
注意2:ETLMGR.ETL_INCR_PARAM.TIME_BEFORE_NOW(增量結束時間與當前時間的時間差,以秒為單位)的值建議不小於300,以避免一些來不及commit的資料會丟失。
登陸到Designer,本章所述的所有操作均在Designer客戶端。
10.1 匯入源和目標的表結構
匯入源表結構
建立源表的ODBC連線
EnableNcharSupport: 預設是不打勾的,不打勾的情況下匯入char,varchar,varchar2會變成nchar,nvarchar,nvarchar2
ODBC連線只是作為匯入源表和目標表的結構的媒介,不會進行實際資料的處理,實際資料的處理由服務端Connection完成
從ODBC連線中匯入源表的結構
匯入目標表結構
匯入目標表結構與匯入源表結構相似,但是要先切換到目標表的編輯視窗
10.2 Mapping設計
開發時注意檢視客戶端左上方的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要求儘量使用增量(增量區間可優先按時間確定,沒有時間戳時按主鍵確定)
- 對於資料來源表確實無法提供增量時間或主鍵的則全量抽取。全量抽取只適用於只適用於資料量小的表,如果資料表的資料量特別大,則需要跟需求方重新確定需求。
10.3 常用元件設計說明
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執行的時候會從他們中取小的一個值
11 Workflow設計
開發時注意檢視客戶端左上方的Folder顯示,一定要在正確的Folder裡面工作。
11‑1檢視工作資料夾
Workflow設計概覽:Workflow設計完成後的樣子及各部分功能
11.1 建立Workflow
登陸到Repository Manager,開啟目標資料夾,展開(不是開啟)資料夾“000_Shared”,找到Workflow“WF_for_copy”並將其拖拽到目標資料夾,此時將會彈出一個“Copy Wizard”對話方塊。在衝突處置中選擇“rename”並按命名規範重新命名。
11‑2按命名規範重新命名
11.2 Workflow屬性設定
- 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分配計劃
11.3 新增可複用Session “pre_sql”、“post_sql”
如果在資料夾下找不到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_*的日誌檔案
11.4 編輯Assignment
設定$$TARGET_OWNER,$$TARGER_TABLE的值
$$TARGET_OWNER = 目標表的owner
$$TARGET_TABLE = 目標表名
11‑6 編輯Assignment
12 Session設計
登陸到Workflow Manager,開發時注意檢視客戶端左上方的Folder顯示,一定要在正確的Folder裡面工作。
12.1 建立Session
登陸到Workflow Manager,,開啟Session放置的Workflow
在工具欄的左上角左擊session建立圖示後鬆開滑鼠,然後在工作區任意位置左擊一下彈出Session建立對話方塊,選擇正確的mapping,並按照5.4規範命名
12‑1 建立Session
將Assignment、Sessionpre_S_*、新建的Session、post_S_*串聯
12‑2 串聯Session
12.2 必要Session屬性設定
對於Session的修改和設定一定去到Session工作區設定,儘量不要在Worklet或者Workflow裡面做特殊設定,比如指定表名或者指定使用者名稱等。
12.2.1 General屬性
- Failed Parent if this task failed:勾選
- Treat the input link as: And
12‑3 General屬性設定
12.2.2 Property屬性
- Session Log File Name:FolderName_SessionName.log,(參照樣例,需要手動寫入)
- Parameter Filename :
當 增量引數是由pre_S*生成的引數檔案控制時: $PMRootDir/BWParam/$$PA RAM_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屬性設定
12.2.3 Config Object屬性
- 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”的值
12.2.4 Mapping屬性
12.2.4.1 Source 屬性
配置源表的連線資訊,包括使用的Connection(連線),源表
12‑5 設定源表的連線資訊
檢查源表的過濾條件(可選),預設是繼承mapping中Source Qualifier 中的過濾條件一致,在session裡可以進行個性化設定
12‑6 設定Source Filter
12.2.4.2 Target屬性
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
13 從中間庫取資料
從中間庫取資料時的設計需要在中間庫資料載入不及時的情況下,從中間庫的源庫取資料來避免資料漏採,所以在Workflow中要設計兩個Session分別能從中間庫、中間庫的源庫抽取資料。可複用Session‘pre_s_MID’可以生成當批次的增量時間值,並根據中間庫取資料的及時情況讓其中一個Session空跑。
參考:資料夾000_Sample下WF_M_FOR_MID
注意:以下設計只能針對基於時間的增量。
13.1 複製共享物件
參考 複製共享物件 建立‘M_GetParam_Mid’的快捷方式,複製’ re_S_MID’、’post_S_MID’
13.2 Workflow設計
向目標庫的 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)可以編輯連線的條件
14 寫資料到FTP 檔案
可參考資料夾000_Sample下WF_M_FOR_FTP的Workflow的設計
FTP Connection:在幫助文件的搜尋‘FTP Connection’關鍵字
寫資料到FTP檔案時,由於目標不再是資料庫,所以不需要在ETLMGR.ETL_INCR_PARAM設定增量引數的值,也不能在將執行日誌寫入日誌表中。增量的控制一般採用sysdate(DB引數)來實現。建議每FTP檔案的命名帶上時間戳並且在FTP檔案順利生成後寫一個標誌檔案來標誌FTP檔案順利生成。
15 開發建議
1) 習慣點選Ctrl+S進行Mapping的儲存,避免客戶端崩潰造成的不必要損失
2) 習慣性的經常去Refresh Mapping和Validate Session和Workflow,保持Session和Mapping的一致,保持Session的正確可用性
3) 下班前及在進行重大修改前對相關內容做備份,備份操作參考12章
16 備份及恢復
16.1 備份
登陸到Repository Manager
- 備份Workflow
操作:選擇需要備份的Workflow(結合Shift及Ctrl可多選)à右鍵àExport(匯出)à選擇儲存路徑並填寫檔名稱à點選儲存按鈕
上述操作會備份Workflow及Workflow所有子物件如:Session、Mapping、Source、Target等
- 備份Mapping
操作:選擇需要備份的Mapping(結合Shift及Ctrl可多選)à右鍵àExport(匯出)à選擇儲存路徑並填寫檔名稱à點選儲存按鈕
上述操作會備份Mapping及Mapping的所有子物件如: Mapping、Mapplet、Source、Target等
- 備份其它物件,參考上述兩種備份操作
16.2 恢復
登陸到Repository Manager
操作:選單RepositoryàImportant Objectà選擇需要匯入的XML檔案,開啟à選擇下一步à選擇需要匯入的物件à選擇並確認目標資料夾àImportà (有衝突時會出現)處置衝突的解決方法à下一步
Tips:在處置衝突時可對多外物件應用相幾的處置方法
14‑1 匯入物件時處置衝突
17 參考文件
18 常見問題解決
解決方法:檢查Workflow、Session的命名規範,如'S_M_TCMS_TM_DEPARTMENT'寫成
's_M_TCMS_TM_DEPARTMENT'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14377/viewspace-2563983/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開發規範
- MySQL資料庫規範 (設計規範+開發規範+操作規範)MySql資料庫
- 規範開發工具
- php 開發規範PHP
- Redis 開發規範Redis
- 前端開發規範前端
- redis開發規範Redis
- MySQL開發規範MySql
- MySQL 開發規範MySql
- Git 開發規範Git
- react 開發規範React
- React Native 開發規範React Native
- API介面開發規範API
- Vue前端開發規範Vue前端
- web前端開發規範Web前端
- 阿里雲Redis開發規範阿里Redis
- 前端開發編碼規範前端
- C#開發命名規範C#
- JAVA後端開發規範Java後端
- 開發流程規範機制
- 規範:開發環境部署開發環境
- 阿里Android開發規範:資原始檔命名與使用規範阿里Android
- web前端開發規範總結Web前端
- 史上最全的Vue開發規範Vue
- 開發規範文字(自我學習)
- 開發規範(轉載自大牛)
- MySQL Ruler mysql 日常開發規範MySql
- 個人專案開發規範
- MySQL 設計與開發規範MySql
- Web前端開發規範手冊Web前端
- Node開發規範v1.0
- 深入 Git 和開發規範(一)Git
- 深入 Git 和開發規範(二)Git
- 資料開發流程及規範
- ? 前端開發行為指導規範前端
- Java開發規範(效能提升)更新中Java
- 阿里Android開發規範:安全與其他阿里Android
- 開發規範是血淚教訓