2014-05-14 82 views
0

我有一個具有ID和源(VARCHAR)PDI電水壺/勺表外鍵匹配

1 Facebook 
2 Twitter 
3 Google 

一個源表我有一個具有源(VARCHAR)的輸入數據和視圖(INT)

Facebook 10 
Twitter 12 
Reddit 14 

我想水壺工作要做到這一點:

  1. 檢查源在源表中存在,如果是更換添加型INT所謂的sourceID用的場來自源的相應ID
  2. 如果不存在,請將其添加到源表中。

例如,從上面的數據的結果應該是這

sourceID,Views 
1,10 
2,12 
4,14 (Reddit wasn't in the table so it created it and the autoincrement gives it ID 4). 

我無法找到合適的步驟來實現這一

回答

2

我的回答使用兩個轉變:在所述第一步驟的中間結果是通過將源創建並使用匹配鍵來源。另外,最大的源ID被確定並存儲在一個變量中。請注意,兩個排序元素和合並元素可以被替換爲單個「內存合併」元素。

First transformation: merge sources and views

在第二變換的中間結果被讀取,並且根據是否存在對現有的數據或新的條目被插入到源表來執行或者更新現有的一個源。新條目的源ID被計算爲從變量檢索到的最大ID與從1開始的序列之和。

Second transformation: insert and update

0

我推薦使用組合查找步驟。

指定source_name是要匹配的關鍵字,source_id是要檢索的關鍵字。如果源存在於表中,則返回鍵,否則將其插入表中並返回新鍵。

您可以指定是否要使用db計數器,auto_increment字段,或者如果要使用tableMax + 1作爲新密鑰。

它允許您緩存整個表格,這可以極大地提高性能。