天天看點

Informatica Update 機制詳解

Informatica Update 機制詳解 

轉自:http://informatica.iblog.com/post/3070/381606

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

       Informatica 的 Update過程簡單說,就是給每條資料設定一個Delete,Insert,Update或者Reject的标志的過程,我們統稱為設定更新标志位的過程,最終排程程式将根據标志位來進行具體的更新操作執行。以下根據标志的設定順序進行詳細說明。

  1. Init

      對于任何一個 Mapping的每一條資料, 初始預設标志為Insert。即在整個過程中,如果沒有任何更改标志位的操作,這條資料将作Insert操作。

  1. 在Mapping中使用了Update Strategy

當在 Mapping中使用了Update Strategy時,則根據DD_UPDATE, DD_INSERT, DD_DELETE等可以将更新标志位的值由 Insert更改為Update,Insert,Delete等。

  1. Treat Source Rows As
Informatica Update 機制詳解

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

  1. Target Properties

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

Informatica Update 機制詳解

       它的最初預設設定即是圖中所示, Insert, Update as Update, Delete三個選項被選中。這兒就是我們所說的最終排程執行的依據。預設的3個選中選項,表明當Session運作的時候,碰到Insert标志的,即做Insert操作, 碰到Update标志的即做Update操作,碰到Delete标志的就做Delete操作。當然, 我們可以把鈎取消掉,這樣Informatica運作時,碰到相應标志的資料,将不做任何操作。例如,把Insert的鈎取消掉,那Session運作過程中,将對所有标記為Insert的資料不做任何操作。

Informatica Update 機制詳解

        這兒需要特别解釋的便是 Update的方式,它具有三種方式可以選擇。在此将對這3種方式,做一個詳細的說明。         首先,需要特别說明的是,這 3種方式是互斥的,即同時隻能選中一個。 Update as Update : 對于所有被标記為 Update的資料,進行Update操作 Update as Insert:     對于所有被标記為Update的資料,全部進行Insert操                                      作,不做 Update操作 Update else Insert: 對于所有被标記為 Update的資料,先做Update操作,                          然後對沒有 Update成功的資料,再進行Insert操作。 例如:                             

Informatica Update 機制詳解

         假設這 3條資料在前面所述步驟中被設定為Update标志, 而我們的Target Properties設定為Update Else Insert,此時的Informatica将如何運作呢。  資料 1,2,3将首先進行Update操作,而1,2根據主鍵找到了相應的資料進行Update,而3則沒有找到,Update失敗,然後對于3, Informatica将采取Insert方式進行操作,最終結果便是                              

Informatica Update 機制詳解

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

Informatica Update 機制詳解

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

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

繼續閱讀