2011-07-18 64 views
4

我現在面臨以下問題:如何在管理數據轉換的同時通過spoon,pentaho中的列合併2個csv文件?

我有兩個輸入:
1)I有35列和它們的適當的頭一個csv基本文件。
2)我有很多給定的文件,不受我控制,可能包含或不包含35列,甚至更糟糕的是,它們可能無序。

我不得不從第二CSV文件中的列匹配的列在第一個CSV文件。如果第二個csv文件沒有全部35列,我應該按照正確的順序創建它們。

一旦我有一個適當的csv文件(其中一個頭部看起來像第一個CSV頭),我將它傳遞給管理數據的列標題引用它們的腳本。

一個可能的解決辦法是讓現有外地輸入的腳本中,但是,我不能這樣做,因爲該領域似乎固定引用第二CSV文件的現有列標題。因此,當我試圖訪問一個不存在的專欄中,我結束了一個異常...

任何幫助將不勝感激!

+2

只是爲了跟進這個問題。我已經放棄了。我使用本地數據庫解決了水壺問題。但是真正解決了我的問題的是我開發的一個小罐子,用於處理水壺外的csv文件。我的朋友仍然在尋找解決方案,因爲他只需要使用水壺=/ – wleao

+3

這在PDI中非常困難。你應該看看元數據注入步驟 - 這可能會做你想做的。實際上,您必須讀取文件,計算出結構,然後將其注入到轉換中,然後讀取文件本身。 – Codek

回答

0

This is an example data widening.

期限「領域在第二CSV無序」可以有多個含義

  1. csv文件,但是從時間不同領域的順序相同的源時間
  2. 的位置csv文件中的字段(列號)在由不同源提供的文件中是不同的。

第一種情況很奇怪。同一個來源應該提供相同的數據,如果不是這樣,那麼作出決定的邏輯可能會非常複雜。

第二種情況看起來更真實。在這種情況下,你可以使所有的來源到35個領域。那麼你需要確定領域。在水壺中有很多工具可以檢測數據類型,字符串操作,正則表達式等等。

其實這聽起來像你需要的字段的自動檢測。

但沒有真實的數據,很難看到模式。由於您在數據庫級別實施了這種現場檢測邏輯,因此它也可以在水壺中使用。

無論如何如果邏輯真的很複雜,那就使用JavaStep,JavaScript。

相關問題