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
留言
張貼留言