30天學會Data Integration - Kettle系列 第 20 篇 - Step - 一對一查詢
此篇要繼續介紹一個Join的Step:[Lookup]Database lookup,它的特色就是,Join之後只會回傳一筆資料,例如可以使用Database lookup來取得每個客戶最近一筆的登入紀錄;如果是客戶所有的登入紀錄的話,要改用前一篇的Merge join來完成。
[Lookup]Database lookup介紹
Database lookup會根據前一個Step的資料流去查詢資料,並將查詢到的欄位加入到資料流中,意思也就是說,如果前一個Step取得了5筆客戶資料,那麼Database lookup會針對這5筆資料再去指定的table中查詢,並將查詢結果的欄位加入到這5筆資料當中,查詢後的資料筆數一樣會維持在5筆,也適合使用在一對一的情況,所以不像前兩篇的Join,Join結果可能會有多筆的情況
本篇目標
以北風Northwind為例,想要取得客戶最新的訂單,下圖以 CustomerID='ALFKI'來查詢訂單資料,最新的訂單日期1998-04-09
取得客戶資料
新增與設定Table input
取得訂單資料
新增Database lookup
設定Database lookup
- 選擇Orders Table
- 設定查詢條件
- 設定排序,因為是要取得最新的訂單,所以要針對OrderID進行Desc的排序
- 取得查詢結果的欄位
預覽結果
CustomerID='ALFKI'最新的訂單日期是1998-04-09
以上就是三篇就是有關於Join的介紹,3種Step各有它們的特色,設定方式也都不同,可視情況自行挑選使用
Join 總結
Database Join
1.直接下SQL,可在SQL中傳入前一個Step中的欄位值
2.提供2種Join方式LEFT JOIN 與 OUTER JOIN
Merge Join
1.不用下SQL,直接選擇要join的欄位
2.一定要事先排序join的欄位
3.提供4種Join方式FULL OUTER、LEFT OUTER 、RIGHT OUTER、INNER JOIN
Database lookup
1.不用下SQL,直接選擇要查詢的欄位
2.查詢結果只會取得一筆資料
留言
張貼留言