30天學會Data Integration - Kettle系列 第 19 篇 - Step - Merge Join與篩選資料

 本篇要介紹另外一種Join的Step:[Joins]Merge Join,Join的類型有四種可以選擇,而前一篇的Database Join就只有Left Join跟Outer Join而已,另外還有很好用的資料過濾Step:[Flow]Filter rows,接下來就來認識一下這兩個Step

[Joins]Merge Join介紹

必須存在兩個不同的Step,才能進行Join,Join的類型有四種:INNER、LEFT OUTER、RIGHT OUTER與FULL OUTER;另外有一點必須特別注意,Join之前必須排序指定的欄位。

[Flow]Filter rows介紹

提供設定多條件的方式來過濾資料,當存在前一個Step時,則可以選擇欄位值來進行塞選,比對值的方式有提供多種函式,點選右上角的 + icon可以增加多個條件



本篇目標

一樣使用MSSQL的Northwind資料庫來示範,客戶有91筆,訂單有830筆,本篇想要找出所有客戶的訂單明細,以及沒有訂單的客戶各是哪些,以下操作很多都是介紹過的Step,設定的步驟會快速帶過哦!

取得訂單資料與客戶資料

新增Table Input,取得客戶資料



新增Table Input,取得訂單資料



新增與設定Merge Join

1.新增Merge Join,並建立Hop
2.選擇First與Second Step來源,這邊的First與Second其實也代表Left與Right Table
3.選擇Join Type,因為我們要找出所有客戶的訂單,不論此客戶是否有購買過資料都要找出來,所以選擇LEFT OUTER
4.設定Join的Key,請輸入CustomerID
5.按下OK



此時會跳出提示訊息,提醒Join之前一定要排序,否則資料會異常



新增Sort Rows

新增兩個Sort Rows,這個Step之前有介紹過,可以參考此篇Step - 數值對應與欄位排序,建立Hop時,有個小技巧,可以按住Step拖曳到想要插入的Hop的線上面(例如:訂單資料與Merge Join之間的那條線),當Hop變成粗線時,則代表可插入Step



此時放開Step也會出現提示訊息,按Yes



兩個Step皆設定以CustomerID來排序



預覽Merge Join

即得到832筆資料



即代表有兩個客戶是沒有訂單的,接下來我們要開始進行有訂單與無訂單的客戶的篩選

新增與設定Filter rows

新增Filter rows,建立Hop,請輸入過濾的條件,因為我們要找出沒有訂單的是哪些客戶,所以條件請下 OrderID欄位等於NULL



預覽Filter rows

得到兩個沒有訂單的客戶



但是有訂單的客戶我們要怎麼取得呢?

指定Filter rows的Result Step

請新增兩個Microsoft Excel Output,並建立Hop,此時會發現Kettle要求我們選擇Hop的類型,因為Filter rows有True與False兩種型態(Hop上面也會有True與False的icon提供我們做辨識),透過Hop可以指定符合條件與不符合條件的資料要流向哪個Step,所以我們才可以得到有訂單與無訂單的客戶各是哪些



預覽Microsoft Excel Output

取得客戶資料與其訂單資料



得到沒有訂單的客戶




慢慢了解越來越多的Step之後,可以做的分析就越多了,相對的設定步驟也暴增,不知道大家是否跟得上XD,還是要多加練習,才會比較有感覺,下一篇一樣繼續介紹Join

留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明