INFORMATICA 開發規範

目    錄html

Informatica開發規範.... 1java

目    錄.... 2mysql

1        編寫目的.... 4sql

2        ETL研發責任人界定.... 4數據庫

3        ETL 研發數據庫操做約束條件.... 4編程

4        定義.... 4服務器

5        範圍.... 5session

6        系統通用屬性.... 6oracle

7        命名規則.... 6app

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、DB二、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」爲例進行說明

  1. 登錄到Informatica 服務器,查看對應的SID「ASURE」是否已經添加到tnsname.ora文件中,不然在tnsname.ora中添加
  2. 登錄到Workflow ManageràConnection(鏈接)àRelationalàSelect Type = 「Oracle」àNew…(按鈕)

 

 

8‑1 建立Connection

  1. 修改Connection鏈接的權限,登錄到Workflow ManageràConnection(鏈接)àRelationalàObjects:選擇須要修改的Connection鏈接àPermission…(按鈕)à修改屬主。給Others組執行的權限。

 

8‑2 修改Connection屬主

9   建立文件夾

在建立文件夾前,須要在目標數據建立用戶ETLMGR,腳本在文件夾「ETLMGR」中,請按照順序執行

9.1 建立文件夾

  1. 登錄Repository Manager 參考第5章的命名規則建立文件夾

操做:FolderàCreateà在彈出的對話框中輸入文件夾名稱

          不關閉對話框進入下一步

  1. 選擇新建文件夾的屬主

 

 

9‑1 選擇文件夾屬主

9.2 複製共享對象

此部分操做由開發從員完成

  1. 登錄Repository Manager將文件夾「000_Shared」下的Mapping「M_GetParam」、 「M_getSessionRunStatus」拖拽到新建的文件夾中,並在彈出的建立快捷連接對話框選擇「所有肯定」。

 

 

9‑2 建立共享Mapping快捷連接

  1. 登錄Workflow Manager打開新建的文件夾,將文件夾「000_Shared」下的Session 「pre_S」、「post_S」拖拽到新建的文件夾中,並在彈出的複製對話框選擇「肯定」,

 

 

9‑3 複製共享Session

而後處理Mapping衝突,爲找不到的Mapping從新選擇對應的快捷方式

 

 

9‑4 Mapping衝突處理

衝突處理完接提示選擇下一步並確認,完成這一步驟的操做

  1. 登錄到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裏面工做。

 

 

  1. 建立Mapping

展開文件夾「000_Sample」,找到Mapping「M_for_copy」並將其拖拽到目標文件夾,在彈出的對話框中選擇「Yes」

  1. 根據第五章的命名規範重命名「M_for_copy」並添加註釋

操做:菜單MappingàEdit

Comment(註釋) 內容填寫以下:

Create date: 日期

Create by:   用戶名(現實中文名)

        Desc: decription 例:用戶信息交換

        [

         Modify Date:

         Modify by: 用戶

Desc: decription 例:過時用戶信息再也不交換

]

  1. 全部的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 à增量截至主鍵值
  1. 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屬性設置

  1. 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 例:添加北京用戶信息同步到集團

]

  1. Properties(屬性)
  • Enable HA recovery:打勾
  • Automatically recover terminated task:打勾
  • Maximum automatic recovery attemps:5
  1. Schedule

建立可複用的計劃

 

 

爲Workflow分配計劃

 

 

11.3   添加可複用Session 「pre_sql」、「post_sql」

若是在文件夾下找不到pre_S」、「post_S」,參考複製共享對象

  1. 將可複用Session 「pre_S」、「post_S」,添加到在Workflow中, 並按命名規範重命名,如workflow名爲「WF_M_CJN001」,則Session的名稱分別爲「pre_ S_M_CJN001」、「post_ S_M_CJN001」

 

 

11‑3 可複用Session添加到Workflow

  1. 修改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 NameFolderName_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/$$PARAM_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'

相關文章
相關標籤/搜索