iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 19
0
Big Data

30天學會Data Integration - Kettle系列 第 19

Step - Merge Join與篩選資料

  • 分享至 

  • xImage
  •  

本篇要介紹另外一種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可以增加多個條件
http://ithelp.ithome.com.tw/upload/images/20170103/20091626KWp3bONM1z.png

本篇目標

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

取得訂單資料與客戶資料

新增Table Input,取得客戶資料
http://ithelp.ithome.com.tw/upload/images/20170103/200916269TA0LCCoSc.png

新增Table Input,取得訂單資料
http://ithelp.ithome.com.tw/upload/images/20170103/200916266eQCsRr3Jb.png

新增與設定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
http://ithelp.ithome.com.tw/upload/images/20170103/20091626CIvDgQwWsd.png

此時會跳出提示訊息,提醒Join之前一定要排序,否則資料會異常
http://ithelp.ithome.com.tw/upload/images/20170103/20091626xIEO2fqEYR.png

新增Sort Rows

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

此時放開Step也會出現提示訊息,按Yes
http://ithelp.ithome.com.tw/upload/images/20170103/20091626pX6RrMOCXl.png

兩個Step皆設定以CustomerID來排序
http://ithelp.ithome.com.tw/upload/images/20170103/2009162683Kty6RebN.png

預覽Merge Join

即得到832筆資料
http://ithelp.ithome.com.tw/upload/images/20170103/20091626ye9JFSVR06.png

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

新增與設定Filter rows

新增Filter rows,建立Hop,請輸入過濾的條件,因為我們要找出沒有訂單的是哪些客戶,所以條件請下 OrderID欄位等於NULL
http://ithelp.ithome.com.tw/upload/images/20170103/2009162651nCVMKcvS.png

預覽Filter rows

得到兩個沒有訂單的客戶
http://ithelp.ithome.com.tw/upload/images/20170103/2009162685KzZwDgFc.png

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

指定Filter rows的Result Step

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

預覽Microsoft Excel Output

取得客戶資料與其訂單資料
http://ithelp.ithome.com.tw/upload/images/20170103/200916266lNsV0VIVe.png

得到沒有訂單的客戶
http://ithelp.ithome.com.tw/upload/images/20170103/20091626RqzJfCWvYI.png


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


上一篇
Step - 資料庫Join
下一篇
Step - 一對一查詢
系列文
30天學會Data Integration - Kettle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言