informatica-etl全量增量設計流程

  • 在數倉ODS層創建目標表

例:

若源表爲test01

目標表在172.16.0.133/oratest    ods_wshh/wshh@2015的格式:

  • 創建全量覆蓋工作流
  1. 在sourcetarget目錄導入工作流所需要的源和目標並保存

   01導入源:

   

02導入目標:

03保存 Ctrl + s

  1. 打開項目ODS_MOQ文件夾,用拖拽的方式建立源和目標表的快捷方式

01創建源的快捷方式

02創建目標的快捷方式同上;

也可以批量拖入創建快捷方式

  1. 創建工作流所需要的map

01根據格式創建map名稱

02拖拽組件

03根據需要過濾數據或修改日期

04將字段全部拖入表達式,選擇第一個字段,按shift點最後一個全選所有字段,拖入表達式;

05添加表達式f(x)增加字段ETL_INSERT_TIME、ETL_UPDATE_TIME

06修改新增字段名稱和類型,修改新增加字段的變量值,SESSSTARTTIME是infa系統時間變量;

07選空白處,右鍵點擊自動連接

08保存map;

  1. 創建可重用的session,並編輯map的源和目標

01在task developer創建可重用session,並重命名

02編輯可重用session,確定源數據庫和owner

03確定目標數據庫和覆蓋目標表的方式

04保存session;

  1. 創建工作流,並保存

01創建工作流,選擇集成服務

02拖拽可重用session,連接

03保存工作流

  1. 創建計劃程序

01新建計劃程序

02確定計劃名稱

03確定計劃規則

04保存計劃

05編輯工作流應用計劃

06保存工作流

  1. 運行工作流並監控

  • 創建增量工作流
  1. 安裝時間戳增量抽取,Treat source rows as更新插入

01創建map:M_T_ODS_FOC_T1

02設置map的變量,變量精度29;

03增加f(x)組件,

04編輯f(x)用於增加字段和設置變量爲 :

SETVARIABLE($$VDATE,TO_CHAR(SESSSTARTTIME,'yyyy/mm/dd hh24:mi:ss'))

05編輯Source qualifier,按時間戳抽取

06自動連接f(x)與目標表,保存map;

 

07創建session,用Treat source rows as 模式更新插入抽取的數據

 08編輯session屬性,Treat source rows as選擇update模式

編輯session的映射,源

編輯session的映射,目標

創建工作流並保存

已經驗證,挺好用

  1. 安裝時間戳增量抽取,update和lookup更新插入

01創建map:M_T_ODS_FOC_T1_UPDATE

02設置map的變量,變量精度29;

03增加f(x)組件,

04編輯f(x)用於增加字段和設置變量爲 :

SETVARIABLE($$VDATE,TO_CHAR(SESSSTARTTIME,'yyyy/mm/dd hh24:mi:ss'))

05編輯Source qualifier,按時間戳抽取

06添加lookup組件,查詢目標表,編輯端口,選擇目標表主鍵

07將f(x)主鍵端口連接lookup組件,並重命名TID_IN,並編輯lookup關聯條件和cache lookup

08添加update組件,並將lookup和f(x)組件輸出端口連接到update組件

09編輯update組件屬性,確定更新規則

10連接update與目標表,TID_IN與目標主鍵連接,保存map;

 

07創建session,用Treat source rows as 模式更新插入抽取的數據

 08編輯session屬性,Treat source rows as選擇Data driven模式

編輯session的映射,源

編輯session的映射,目標

創建工作流並保存

已經驗證

  1. 安裝時間戳增量抽取,ETL_INSERT_TIME不變

06添加lookup組件,查詢目標表,編輯端口,選擇目標表主鍵

 

07將f(x)端口連接lookup組件,並編輯lookup關聯條件和cache lookup

 

08添加f(x)組件,將lookup組件所用到的端口連接

編輯f(x)ETL_INSERT_TIME字段,確定是否更新,如果tid是空,該行爲插入

08添加update組件,並將f(x)和update組件連接

09編輯update組件屬性,確定更新規則

10連接update與目標表,TID_IN與目標主鍵連接,保存map;

 

 

  • Infa update機制詳解

Informatica 作爲ETL工具,Update是其很重要的一個特性。也正因爲如此,我們會發現在Informatica工具的很多地方都會有Update的相關設置,許多時候給大家都造成了很大的迷惑,不知道誰先誰後,誰的優先級高,或者具體的作用是什麼,希望能借此文給大家一個清晰的概念。

 

Informatica 的Update過程簡單說,就是給每條數據設置一個Delete,Insert,Update或者Reject的標誌的過程,我們統稱爲設置更新標誌位的過程,最終調度程序將根據標誌位來進行具體的更新操作執行。以下根據標誌的設置順序進行詳細說明。

1.Init

對於任何一個Mapping的每一條數據, 初始默認標誌爲Insert。即在整個過程中,如果沒有任何更改標誌位的操作,這條數據將作Insert操作。

2.在Mapping中使用了Update Strategy

 

當在Mapping中使用了Update Strategy時,則根據DD_UPDATE,

DD_INSERT, DD_DELETE等可以將更新標誌位的值由Insert更改爲Update,Insert,Delete等。

3.Treat Source Rows As

        在Session屬性設置裏,通過設置Treat Source Rows As 的值,可以再一次對標誌位進行更新,也就是說無論Mapping裏設置了何種更新標誌,在此,又可以進行一次更改。如果選擇了Insert,Update, Delete三種方式,則無論在Mapping中如何修改更新標誌位,在此將統一全部更改爲Insert,Update,Delete。選擇Data Driven時,系統將不對標誌位做任何修改,維持原來的標誌位值。

4.Target Properties

最後一個對更新產生影響的地方,即是Target的屬性設置。

 

    Target load type:(載入模式)

    Normal:對於有主鍵或約束的目標表進行逐個載入

    bluk:對於沒有主鍵或約束的目標表進行批量載入

    session目標表map操作複選框(對於沒有勾選標記的操作,工作流遇到時不做任何操作)

    Insert:對於所有被標記爲Insert的數據,進行Insert操作。

    Update as Update : 對於所有被標記爲Update的數據,進行Update操作。

    Update as Insert:  對於所有被標記爲Update的數據,全部進行Insert操作,不做Update操作。

    Update else Insert:對於所有被標記爲Update的數據,先做Update操作,然後對沒有Update成功的數據,再進行Insert操作。

    Delete:對於所有被標記爲Delete的數據,進行Delete操作。

    Truncate target table option:在插入目標表前先truncate清空目標表。

     它的最初默認設置即是圖中所示,Insert, Update as Update, Delete三個選項被選中。這兒就是我們所說的最終調度執行的依據。默認的3個選中選項,表明當Session運行的時候,碰到Insert標誌的,即做Insert操作, 碰到Update標誌的即做Update操作,碰到Delete標誌的就做Delete操作。當然, 我們可以把鉤取消掉,這樣Informatica運行時,碰到相應標誌的數據,將不做任何操作。例如,把Insert的鉤取消掉,那Session運行過程中,將對所有標記爲Insert的數據不做任何操作。

 

     這兒需要特別解釋的便是Update的方式,它具有三種方式可以選擇。在此將對這3種方式,做一個詳細的說明。

     首先,需要特別說明的是,這3種方式是互斥的,即同時只能選中一個。

    Update as Update : 對於所有被標記爲Update的數據,進行Update操作

    Update as Insert:  對於所有被標記爲Update的數據,全部進行Insert操作,不做Update操作

    Update else Insert:對於所有被標記爲Update的數據,先做Update操作, 然後對沒有Update成功的數據,再進行Insert操作。

 

例如:

         假設這3條數據在前面所述步驟中被設置爲Update標誌, 而我們的Target Properties設置爲Update Else Insert,此時的Informatica將如何運行呢。

數據1,2,3將首先進行Update操作,而1,2根據主鍵找到了相應的數據進行Update,而3則沒有找到,Update失敗,然後對於3, Informatica將採取Insert方式進行操作,最終結果便是

最後我們可以用一個圖來說明Informatica整個更新的過程:

 

 

在初始化時,我們的更新標誌都被默認設爲Insert,而其中第二和第三步都可以對標誌位進行更改,也就是說前面的所有3個步驟就是一個標誌位的設置過程。

最後一步,則是具體的執行操作。根據設置的不同,執行的過程會採取幾種不同的方式執行

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章