Kettle 作業步驟循環執行的實現


 場景:User_Tables存放着系統用戶的表信息,其中列Table_Name存放着表名。現在想從User_Tables中獲取要進行相同數據抽取操作的表,使用Kettle實現循環執行這些表。例如統計表A、B的總行數:

SELECT COUNT(1) FROM A;
SELECT COUNT(1) FROM B;
這些SQL語句除開表名外,其他部分都是一樣的,所以在使用KETTLE抽取數據時,Kettle循環抽取這些表的數據。

 

環境:Kettle4.4

思路:

1、上面的SQL中除了表名不一致外,其他都是一樣的。所以首先解決Kettle 表輸入中表名替換問題。Kettle提供了設置變量的步驟,可以將查詢出的表名作為變量,在Kettle內進行傳遞賦值。如下圖所示:

2、由於Kettle變量一次只能接收一個值,因此若是要執行查詢操作的表為兩個或者兩個以上,就無法直接使用變量來替換${TABLEnAME}。需要一個能夠存儲多個表名的步驟或腳本實現遍歷查詢出的表名,並將查詢出來的一個表名設置成變量。

                                                   

                         圖1                                                                                                                                            圖2

圖1:將要執行表名從數據庫表中取出來,並復制到trans腳本運行結果中。

圖2:【獲取表的數量】執行的是圖1的Trans腳本,【執行表數量判斷和設置變量】步驟獲取【獲取表的數量】步驟運行的結果,並設置控制循環和表名變量。如下圖:

3、循環控制實現,其中步驟【循環控制器】相當於for(int i=0;i<size;i++)循環中i<size;【獲取表行數】相當於for循環內部的處理操作;【計數器累加】相當於i++。如下圖:

上圖中【計數器累加】也實現變量TABLENAME復制操作。

4、整個實現的腳步如下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM