2012-10-22 46 views
4

我想要一個表分成基於採用了Talend Open Studio的給定列的值多個表的表的數目不定。假設這個列可以包含任何整數值1,2,3等,那麼根據這個值,這些行應該到table_1,table_2,table_3等。拆分數據的列值將使用ETL工具

如果我能解決當這個列中的不同值的數量是未知的,但現在我們可以假設所有這些輸出表已經存在。底線是不同值的數量,因此不同表格的數量足夠高,以至於不能手動設置單個過濾器。

使用Talend Open Studio或任何類似Pentaho Keetle的模擬開源ETL工具可以解決這個問題嗎?

當然,我可以自己寫一個簡單的腳本,但是我寧願使用合適的ETL工具,因爲完整的ETL過程非常複雜。

回答

2

在PDI或Pentaho的壺,你可以使用分區做到這一點。 (步驟IIRC上的右鍵單擊選項)PDI中的分區專爲這類問題而設計。

+1

謝謝,這解決了。有一個選項叫'是在一個字段中定義的表的名字嗎?'爲'表格輸出'。 – user1765796

0

是來到我心中的第一溶液使用Replicator通過對當前行運到三個濾充當後衛,只能讓行與任一給定列1 2或3。圖:http://i.imgur.com/FmvwU.png

但你也可以建立在表名動態,如果這是你想要的,PIC:http://i.imgur.com/8LR7Q.png

+0

謝謝,那是我最初的想法也是如此。但是,這僅適用於少數值/表,並在我的情況,可能有多達數千表,以便建立所有這些過濾器的問題單獨是不可行的。 – user1765796

1

是的,這是可以做到的,分裂單一列不同的表的基礎上的數據,但你需要動態地創建表: -

tFileInputDelimited-> tFlowtoIterate - > tFixedFlowInput->和所述可以使用 辦事處一覽()來獲得的列值,並使用相同的 數據單獨不同的表。 - >表名中可以使用globalMap(Columnused to seperate data)。

enter image description here