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