您好,登錄后才能下訂單哦!
INFORMATICA 開(kāi)發(fā)規(guī)范有哪些,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
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ù)用戶(hù)的獨(dú)立管理系統(tǒng),沒(méi)有專(zhuān)門(mén)研發(fā),由取數(shù)源端研發(fā)負(fù)責(zé)informatica 版本研發(fā)推送數(shù)據(jù)。源端系統(tǒng)對(duì)應(yīng)運(yùn)維人員負(fù)責(zé)對(duì)應(yīng)workflow運(yùn)維。
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)景 | 同步要求 | |||
同步類(lèi)型 | 源表和目標(biāo)表是否存在主鍵或者唯一鍵 | 增量字段上是否有索引(源表和目標(biāo)表) | update 同步 | delte同步 |
有標(biāo)識(shí)字段增量 | 存在pk或者索引 | 需要存在索引 | 需要存在updatetime字段,并使用update字段PK 進(jìn)行update 更新同步。 | 需要將刪除數(shù)據(jù)寫(xiě)入臨時(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 |
序號(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ù)用戶(hù) |
13 | ProductDatabaseSID | 生產(chǎn)系統(tǒng)數(shù)據(jù)庫(kù)SID |
本文檔讀者包括:
l 項(xiàng)目經(jīng)理;
l 系統(tǒng)管理員;
l DBA管理員;
l 開(kāi)發(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等
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. |
以下元素,數(shù)據(jù)庫(kù)表,字段名稱(chēng),函數(shù)名稱(chēng),函數(shù)表達(dá)式,SQL語(yǔ)句均采用大寫(xiě)字母。
數(shù)據(jù)鏈接分為源數(shù)據(jù)庫(kù)鏈接與目標(biāo)數(shù)據(jù)庫(kù)鏈接,ETL的E(抽?。┡cL(加載)的鏈接。
數(shù)據(jù)庫(kù)鏈接方式分為Native、ODBC兩種方式:
1)Native是采用相應(yīng)數(shù)據(jù)的客戶(hù)端連接來(lái)抽取、加載數(shù)據(jù),比如oracle、DB2等;
2)ODBC是采用DataDirect ODBC的方式連接數(shù)據(jù)庫(kù),比如mysql、MSSQL。
數(shù)據(jù)連接的命名采用:DataBaseType_ProductDatabaseSID_ETLUSER。
說(shuō)明:DataBaseType為數(shù)據(jù)源類(lèi)型,ProductDatabaseSID生產(chǎn)數(shù)據(jù)庫(kù)的SID,ETLUser為用與ETL數(shù)據(jù)同步的用戶(hù)。
例如: Ora_ASURE_BILETL,連接方式為Native方式,Ora表示數(shù)據(jù)類(lèi)型為Oracle,ASURE為阿修羅生產(chǎn)數(shù)據(jù)庫(kù)SID,BILETL為ETL的操作用戶(hù)。
例如:ODBC_ Mysql_ASURE_BILETL,ODBC表示采用ODBC的方式連接。Mysql為數(shù)據(jù)庫(kù)類(lèi)型,ASURE為阿修羅系統(tǒng),BILETL為ETL操作用戶(hù)。
表5-1 數(shù)據(jù)庫(kù)類(lèi)型縮寫(xiě)
序號(hào) | 數(shù)據(jù)源類(lèi)型 | 縮寫(xiě) |
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_ |
表5-2 數(shù)據(jù)庫(kù)信息表
序號(hào) | 數(shù)據(jù)庫(kù)中文名 | 數(shù)據(jù)庫(kù)SID | 備注 |
1 | 阿修羅系統(tǒng) | ASURE | |
2 | 新車(chē)輛管理系統(tǒng) | VMS | |
3 | 短信系統(tǒng) | SMSDB | |
4 |
表5-3 常用組件命名前綴
序號(hào) | 組件名稱(chēng) | 圖標(biāo) | 命名規(guī)范 | 含義 |
1 | Source Qualifier |
| sq_ | 從數(shù)據(jù)源讀取數(shù)據(jù) |
2 | Expression |
| exp_desc | 行級(jí)轉(zhuǎn)換 |
3 | Filter |
| fil_ | 數(shù)據(jù)過(guò)濾 |
4 | Sorter |
| sort_ | 數(shù)據(jù)排序 |
5 | Aggregator |
| agg_ | 聚合 |
6 | Joiner |
| jnr_ | 異構(gòu)數(shù)據(jù)關(guān)接連接 |
7 | Lookup |
| lkp_ | 查詢(xún)連接 |
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ǔ)過(guò)程組件 |
16 | Custom |
| cus_ | 用戶(hù)自定義組件 |
17 | HTTP |
| http_ | WWW組件 |
18 | Java |
| java_ | Java自編程組件 |
表5-4 Folder/mapplet/Mapping/Session/Workflow命名規(guī)范
情形 | 名稱(chēng) | 例如 | |
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)過(guò)期 | SCHDL_5MIN_Stop20140506 | |
每5分鐘運(yùn)行一次,永不過(guò)期 | SCHDL_5MIN_FOREVER | ||
每天21:30運(yùn)行,永不過(guò)期 | SCHDL_1Day_AT2130_FOREVER | ||
每月4號(hào)21:30運(yùn)行,永不過(guò)期 | SCHDL_1MON_4THAT2130__FOREVER | ||
創(chuàng)建Connection由Informatica管理員完成,但在開(kāi)發(fā)環(huán)境和測(cè)試中開(kāi)發(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屬主
在創(chuàng)建文件夾前,需要在目標(biāo)數(shù)據(jù)創(chuàng)建用戶(hù)ETLMGR,腳本在文件夾“ETLMGR”中,請(qǐng)按照順序執(zhí)行
登陸Repository Manager 參考第5章的命名規(guī)則創(chuàng)建文件夾
操作:FolderàCreateà在彈出的對(duì)話(huà)框中輸入文件夾名稱(chēng)
不關(guān)閉對(duì)話(huà)框進(jìn)入下一步
選擇新建文件夾的屬主
9?1 選擇文件夾屬主
此部分操作由開(kāi)發(fā)從員完成
登陸Repository Manager將文件夾“000_Shared”下的Mapping“M_GetParam”、 “M_getSessionRunStatus”拖拽到新建的文件夾中,并在彈出的創(chuàng)建快捷鏈接對(duì)話(huà)框選擇“全部確定”。
9?2 創(chuàng)建共享Mapping快捷鏈接
登陸Workflow Manager打開(kāi)新建的文件夾,將文件夾“000_Shared”下的Session “pre_S”、“post_S”拖拽到新建的文件夾中,并在彈出的復(fù)制對(duì)話(huà)框選擇“確定”,
9?3 復(fù)制共享Session
然后處理Mapping沖突,為找不到的Mapping重新選擇對(duì)應(yīng)的快捷方式
9?4 Mapping沖突處理
沖突處理完接提示選擇下一步并確認(rèn),完成這一步驟的操作
登陸到Workflow Manager打開(kāi)新建的文件夾,編輯“post_S”、“pre_S”源和目標(biāo)的Connection(連接)
9?5編輯“post_S”
9?6 編輯“pre_S”
注意1:在進(jìn)行Mapping之前,需要在目標(biāo)表數(shù)據(jù)庫(kù)的ETLMGR.ETL_INCR_PARAM中插入對(duì)應(yīng)目標(biāo)表相關(guān)的信息,具體內(nèi)容可能過(guò)查詢(xún)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客戶(hù)端。
導(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)表的編輯窗口
開(kāi)發(fā)時(shí)注意查看客戶(hù)端左上方的Folder顯示,一定要在正確的Folder里面工作。
創(chuàng)建Mapping
展開(kāi)文件夾“000_Sample”,找到Mapping“M_for_copy”并將其拖拽到目標(biāo)文件夾,在彈出的對(duì)話(huà)框中選擇“Yes”
根據(jù)第五章的命名規(guī)范重命名“M_for_copy”并添加注釋
操作:菜單MappingàEdit
Comment(注釋) 內(nèi)容填寫(xiě)如下:
Create date: 日期
Create by: 用戶(hù)名(現(xiàn)實(shí)中文名)
Desc: decription 例:用戶(hù)信息交換
[
Modify Date:
Modify by: 用戶(hù)
Desc: decription 例:過(guò)期用戶(hù)信息不再交換
]
所有的Mapping都添加四個(gè)參數(shù)(Parameter),
操作:在復(fù)制Mapping的過(guò)程中已經(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覺(jué)見(jiàn)場(chǎng)景設(shè)計(jì)》
l 在組件中創(chuàng)建變量時(shí),注意選擇數(shù)據(jù)類(lèi)型,選擇長(zhǎng)度,在給變量賦值或?qū)⒆兞抠x值給字段時(shí)要保持?jǐn)?shù)據(jù)類(lèi)型一致,不一致時(shí)要使用顯式類(lèi)型轉(zhuǎn)換。
l 在做字符處理時(shí),注意NULL,空字符串和空格的區(qū)別以及不同的判讀和處理方式
l 不需要輸出的端口不勾選OutputPort。當(dāng)組件中有重名的字段時(shí),輸入的字段在原字段后加'_IN',變量的字段在原字段后加'_V',輸出字段名盡量保持和下一個(gè)組件的輸入字段名名稱(chēng)一致,以便使用按名稱(chēng)自動(dòng)連接
l 數(shù)據(jù)加載方式:全量,增量
全量: Truncate & Insert
基于時(shí)間的增量(具體實(shí)現(xiàn)方案參考Informatica常見(jiàn)場(chǎng)景設(shè)計(jì))
基于主鍵的增量(具體實(shí)現(xiàn)方案參考Informatica常見(jiàn)場(chǎng)景設(shè)計(jì))
對(duì)于所有的Mapping要求盡量使用增量(增量區(qū)間可優(yōu)先按時(shí)間確定,沒(méi)有時(shí)間戳?xí)r按主鍵確定)
對(duì)于數(shù)據(jù)源表確實(shí)無(wú)法提供增量時(shí)間或主鍵的則全量抽取。全量抽取只適用于只適用于數(shù)據(jù)量小的表,如果數(shù)據(jù)表的數(shù)據(jù)量特別大,則需要跟需求方重新確定需求。
l Source Qualifier 組件使用:
對(duì)于源系統(tǒng)使用nvarchar2,導(dǎo)入時(shí)確保在mapping中使用nstring與之匹配,這樣才能確保字符傳遞的正確性,否則會(huì)出現(xiàn)亂碼,字符被截?cái)嗟葐?wèn)題
如果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行)的連接查詢(xún)一定要使用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_返回的字段名稱(chēng);如果是有連接的Lookup,如果是返回一個(gè)值,那組件的命名采用LKP_返回的字段名稱(chēng),如果是多個(gè)值,那組件的命名采用LKP_被查詢(xún)表名稱(chēng)
對(duì)于小表(小于500000行)的連接查詢(xún)使用Lookup控件
對(duì)于Lookup維表查找維度ID時(shí),需要在輸出字段添加default value = -1,如下圖:
Lookup控件的使用有三種方式,同時(shí)注意幾點(diǎn)
1: Connect
對(duì)于mapping中對(duì)某個(gè)表只查詢(xún)一次的盡量使用Connect Lookup,在使用Connect lookup的時(shí)候?qū)τ跊](méi)有用到的Column可以刪除掉,防止浪費(fèi)Cache空間,一定要使用Cache --Lookup Caching Enabled
2: Unconnect
對(duì)于mapping中對(duì)某個(gè)表查詢(xún)多次的盡量使用Unconnect Lookup,對(duì)于沒(méi)有用到的
字段可以進(jìn)行刪除,防止浪費(fèi)Cache空間
3: Lookup函數(shù)
對(duì)于mapping中的Expression中進(jìn)行查詢(xú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)镮NFORMATICA 對(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ù)過(guò)濾掉
l AGGREGATOR 組件使用:
在使用Aggregator前,最好對(duì)數(shù)據(jù)進(jìn)行排序,這樣會(huì)極大提高系統(tǒng)性能,此時(shí)Sorted Input應(yīng)該打勾
一個(gè)mapping中最好只用一個(gè)Aggregator 控件。要使用多個(gè)Aggregator可以考慮使用臨時(shí)表把mapping拆開(kāi)
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è)值
開(kāi)發(fā)時(shí)注意查看客戶(hù)端左上方的Folder顯示,一定要在正確的Folder里面工作。
11?1查看工作文件夾
Workflow設(shè)計(jì)概覽:Workflow設(shè)計(jì)完成后的樣子及各部分功能
登陸到Repository Manager,打開(kāi)目標(biāo)文件夾,展開(kāi)(不是打開(kāi))文件夾“000_Shared”,找到Workflow“WF_for_copy”并將其拖拽到目標(biāo)文件夾,此時(shí)將會(huì)彈出一個(gè)“Copy Wizard”對(duì)話(huà)框。在沖突處置中選擇“rename”并按命名規(guī)范重命名。
11?2按命名規(guī)范重命名
General(通用) ,添加注釋
Create date: 日期
Create by: 用戶(hù)
Source table: Source table1
Source table2
……
Target table: Target table1
Target table2
……
Desc: decription 例:將廣西用戶(hù)信息同步到集團(tuán)
[
Modify Date:
Modify by: 用戶(hù)名(現(xiàn)實(shí)中文名)
Desc: decription 例:添加北京用戶(hù)信息同步到集團(tuán)
]
Properties(屬性)
Enable HA recovery:打勾
Automatically recover terminated task:打勾
Maximum automatic recovery attemps:5
Schedule
創(chuàng)建可復(fù)用的計(jì)劃
為Workflow分配計(jì)劃
如果在文件夾下找不到pre_S”、“post_S”,參考 復(fù)制共享對(duì)象
將可復(fù)用Session “pre_S”、“post_S”,添加到在Workflow中, 并按命名規(guī)范重命名,如workflow名為“WF_M_CJN001”,則Session的名稱(chēng)分別為“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_*的日志文件
設(shè)置$$TARGET_OWNER,$$TARGER_TABLE的值
$$TARGET_OWNER = 目標(biāo)表的owner
$$TARGET_TABLE = 目標(biāo)表名
11?6 編輯Assignment
登陸到Workflow Manager,開(kāi)發(fā)時(shí)注意查看客戶(hù)端左上方的Folder顯示,一定要在正確的Folder里面工作。
登陸到Workflow Manager,,打開(kāi)Session放置的Workflow
在工具欄的左上角左擊session創(chuàng)建圖標(biāo)后松開(kāi)鼠標(biāo),然后在工作區(qū)任意位置左擊一下彈出Session創(chuàng)建對(duì)話(huà)框,選擇正確的mapping,并按照5.4規(guī)范命名
12?1 創(chuàng)建Session
將Assignment、Sessionpre_S_*、新建的Session、post_S_*串聯(lián)
12?2 串聯(lián)Session
對(duì)于Session的修改和設(shè)置一定去到Session工作區(qū)設(shè)置,盡量不要在Worklet或者Workflow里面做特殊設(shè)置,比如指定表名或者指定用戶(hù)名等。
Failed Parent if this task failed:勾選
Treat the input link as: And
12?3 General屬性設(shè)置
Session Log File Name:FolderName_SessionName.log,(參照樣例,需要手動(dòng)寫(xiě)入)
Parameter Filename :
當(dāng) 增量參數(shù)是由pre_S*生成的參數(shù)文件控制時(shí):$PMRootDir/BWParam/$$PARAM_FILE?。ü潭ㄖ担?/p>
當(dāng) 增量參數(shù)不是由參數(shù)文件控制時(shí):留空
Treat Source Rows as, 有幾種類(lèi)型:1: Insert 2:Update 3:Data driven
對(duì)于目標(biāo)表只有Insert的,就選擇,Insert,
對(duì)于目標(biāo)表中存在更新,同時(shí)沒(méi)有使用UpdateStrategy控件的使用: Update
對(duì)于Mapping中使用UpdateStrategry控件的使用Data driven
Commit Interval:默認(rèn)值10000,當(dāng)單次加載超過(guò)10 0000行時(shí)將值設(shè)置為100000
Recovery Strategy:
調(diào)度增量(或者一次全量)超過(guò)500萬(wàn) 并且 在加載數(shù)據(jù)之前沒(méi)有刪除冗余數(shù)據(jù)操作的調(diào)度 選擇:Resume from last checkpoint
其它:Restart task
Enable high precision:勾選
12?4 Properties屬性設(shè)置
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可以考慮增大,最大不能超過(guò)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”的值
配置源表的連接信息,包括使用的Connection(連接),源表
12?5 設(shè)置源表的連接信息
檢查源表的過(guò)濾條件(可選),默認(rèn)是繼承mapping中Source Qualifier 中的過(guò)濾條件一致,在session里可以進(jìn)行個(gè)性化設(shè)置
12?6 設(shè)置Source Filter
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í)填寫(xiě)以下語(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í)填寫(xiě)以下語(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ù)可自行編寫(xiě)
Target Table Name: $$TARGET_OWNER.$$TARGET_TABLE
從中間庫(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í)間的增量。
參考復(fù)制共享對(duì)象創(chuàng)建‘M_GetParam_Mid’的快捷方式,復(fù)制’ re_S_MID’、’post_S_MID’
向目標(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ù)的源表。
pre_S_M_ TargetTable:由‘pre_S’重命名而來(lái), 屬性設(shè)置與 添加可復(fù)用Session 一致。
pre_S_ M_ TargetTable_MID:由‘pre_S_MID’重命名而來(lái), 屬性設(shè)置與 添加可復(fù)用Session 一致,但是要指定兩個(gè)源表的Connection分別到中間庫(kù)和目標(biāo)庫(kù).
post_S_ M_ TargetTable:由‘post_S_MID’ 重命名而來(lái),屬性設(shè)置與 添加可復(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
雙擊連線(xiàn)(link)可以編輯連線(xiàn)的條件
可參考文件夾000_Sample下WF_M_FOR_FTP的Workflow的設(shè)計(jì)
FTP Connection:在幫助文檔的搜索‘FTP Connection’關(guān)鍵字
寫(xiě)數(shù)據(jù)到FTP文件時(shí),由于目標(biāo)不再是數(shù)據(jù)庫(kù),所以不需要在ETLMGR.ETL_INCR_PARAM設(shè)置增量參數(shù)的值,也不能在將運(yùn)行日志寫(xiě)入日志表中。增量的控制一般采用sysdate(DB參數(shù))來(lái)實(shí)現(xiàn)。建議每FTP文件的命名帶上時(shí)間戳并且在FTP文件順利生成后寫(xiě)一個(gè)標(biāo)志文件來(lái)標(biāo)志FTP文件順利生成。
1) 習(xí)慣點(diǎn)擊Ctrl+S進(jìn)行Mapping的保存,避免客戶(hù)端崩潰造成的不必要損失
2) 習(xí)慣性的經(jīng)常去Refresh Mapping和Validate Session和Workflow,保持Session和Mapping的一致,保持Session的正確可用性
3) 下班前及在進(jìn)行重大修改前對(duì)相關(guān)內(nèi)容做備份,備份操作參考12章
登陸到Repository Manager
備份Workflow
操作:選擇需要備份的Workflow(結(jié)合Shift及Ctrl可多選)à右鍵àExport(導(dǎo)出)à選擇保存路徑并填寫(xiě)文件名稱(chēng)à點(diǎn)擊保存按鈕
上述操作會(huì)備份Workflow及Workflow所有子對(duì)象如:Session、Mapping、Source、Target等
備份Mapping
操作:選擇需要備份的Mapping(結(jié)合Shift及Ctrl可多選)à右鍵àExport(導(dǎo)出)à選擇保存路徑并填寫(xiě)文件名稱(chēng)à點(diǎn)擊保存按鈕
上述操作會(huì)備份Mapping及Mapping的所有子對(duì)象如: Mapping、Mapplet、Source、Target等
備份其它對(duì)象,參考上述兩種備份操作
登陸到Repository Manager
操作:菜單RepositoryàImportant Objectà選擇需要導(dǎo)入的XML文件,打開(kāi)à選擇下一步à選擇需要導(dǎo)入的對(duì)象à選擇并確認(rèn)目標(biāo)文件夾àImportà (有沖突時(shí)會(huì)出現(xiàn))處置沖突的解決方法à下一步
Tips:在處置沖突時(shí)可對(duì)多外對(duì)象應(yīng)用相幾的處置方法
14?1 導(dǎo)入對(duì)象時(shí)處置沖突
解決方法:檢查Workflow、Session的命名規(guī)范,如'S_M_TCMS_TM_DEPARTMENT'寫(xiě)成
's_M_TCMS_TM_DEPARTMENT'
看完上述內(nèi)容,你們掌握INFORMATICA 開(kāi)發(fā)規(guī)范有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。