Kettle and Excel Files

在本例中,會將一份 Excel File 內的兩張表格 join 成為一張表格,再匯出為 Text File。

更明確的說,本次的範例檔案表格如下兩圖所示,需要做的是萃取出第一個表格,由 Item ID 分別加總 A, B, C 三種產品的 Sales。再透過 Item ID 將兩個表格 join 為一份表格,呈現每種產品對應的 Sales 與業務員名字。預期結果如第三個圖所示。

此外,由圖可看出資料的欄位名稱是由儲存格 A2 開始,所以讀取資料時應以 A2 為起點。

alt text

alt text

預期結果

alt text

本例的流程如下圖。讀取 Excel 檔案的功能是 Input 下的 Microsoft Excel InputSort rows 位於 Transformation 下,Group by 位於 Statistics 下,Merge Join 位於 Joins 下。

alt text

首先編輯第一個 Microsoft Excel Input 步驟,File or Directory 可設定檔案路徑,設定好點選 Add就可設定完成,如下圖所示。

alt text

接著,點選上方的 Sheets 設定讀取範圍。點選 Getsheetname(s) 指定讀取表格。如前所述,讀取資料時以 A2 為起點,所以分別設定 Start row 與 Start column 為 1 與 0 (Kettle讀取表格時,是以 0 為起始值)。同理設定第二個 Microsoft Excel Input 讀取另一份表格。

alt text

Sort rows 步驟的用意是因為進行 Group by 時,資料必須是已排序,Merge Join 前時也必須排序 (可見文件說明)。設定以 Item ID 排序。

設定 Group by,其範例檔如下圖所示。在 The fields that make up the group,設定用來 Group 的 key。在 Aggregates 設定要 Group 的欄位。

alt text

設定 Merge Join,其範例檔如下圖所示。設定兩個步驟 join 的 key 為 Item ID,且是以 INNER JOIN

alt text

最後本例原本是希望將結果以 Excel 檔案輸出, 但輸出結果的 log 會出現錯誤訊息,如下圖 (但檔案有成功輸出)。問題應與 JVM 版本有關 (未驗證),可見此處

alt text

所以為安全起見,改採用 CSV File 格式輸出。執行後便可得到結果。