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

  1. 選擇Orders Table
  2. 設定查詢條件
  3. 設定排序,因為是要取得最新的訂單,所以要針對OrderID進行Desc的排序
  4. 取得查詢結果的欄位


預覽結果

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.查詢結果只會取得一筆資料

留言

這個網誌中的熱門文章

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

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

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