天天看點

informatica性能問題總結之join元件和lookup元件

一、join元件和lookup元件的差別與聯系:

1、差別與聯系:join 和lookup 在做表之間關聯時,差不多功能。

      若資料量不大,使用join元件效率會高一點,因為join是并行的,lookup是一條一條查,過程比較慢。

      若資料量很大,建議用lookup,因為join要把表先加載到etl伺服器,資料量過大容易造成伺服器壓力,并且若要查的數在最後面,或者是沒有,很浪費時間。但是在關聯條件的地方,lookup相比于join ,除了=,還可以選>,<之類的

2、join元件:

join元件的master和詳細資訊的選擇上,若是内關聯,誰作為master都可以,a left join b 會保留a表的資料,丢棄b表中與a表不比對的資料,在join元件選擇連接配接時,若a表為master,join元件的關聯要選擇詳細外部連接配接,詳細外部連接配接會保留主源的所有資料和詳細源的比對行

3、lookup元件:

      a表使用lookup元件去關聯b表,關聯字段為id,在id向後一個元件拖拽的過程中,id出自b表,則流入後面元件的資料為a、b表比對的資料,不比對的自動丢棄,若id出自a表,則流出的資料是a表的所有資料,若a、b表是内關聯,則需要做篩選,篩掉b表為空的資料,通常選擇b表中的主鍵或者不為空的字段,進行不為空判斷。

      lookup元件的緩存,若資料量不大,使用會提高效率 ,資料量很大時,要都加載到etl伺服器會使得壓力過大,故小表可使用,大表不建議

4、增量抽取:對于沒有主鍵的表做增量抽取時,需要對目标表做lookup(此處不要勾緩存,緩存會把資料都加載過來,如果資料量過大,記憶體不夠會報錯,同時運作也慢,查詢目标表有沒有資料,沒有就插入,此處不能做更新操作(session 屬性那個地方不能選update,選inster即可),需要注意的是要做篩選,把目标表為空的那條數篩出來,做插入操作;

      另一種情況是如果沒有設定主鍵的表,某一字段或幾個字段不為空,且能确定一條數,那麼可以在導入的目标表處,設定邏輯主鍵,進而做更新插入操作