kettle的輸入輸出組件和腳本組件


一、 輸入組件

1.1表輸入

從指定的數據庫中,通過sql語句來查詢數據加載到內存。

允許簡易轉換:勾選后可以避免不必要的字段的數據類型轉換,從而提高性能。

替換sql語句里的變量:勾選后可以通過${queryDate}來使用queryDate變量。

從步驟中插入數據:以上次的步驟中的數據作為數據的參數,使用?來獲取上步驟的數據,查詢多個列就多個?接受。

從步驟中插入數據的例子:

csv文件里面有一些id,我們需要讀取這個id的值,然后去數據庫里面找對應id的數據

我們從csv中讀取數據,所以需要csv文件輸入組件,並且需要從數據庫中回去數據,所以需要表輸入組件,最終會形成下面的轉換圖:

其中csv讀取到的id內容是:

表輸入的配置是:

最終表輸入的輸出是:

1.2一個組件有多個數據通道

一個組件往多個通道發送時:可以選擇分發或者是復制。

分發的意思是分流,就是把輸出分為多分發送到不同的目的地

復制的意思是每個目的地接收到的數據是一樣的

這里舉一個復制的例子,讀取數據庫中的數據復制多分到excel輸出、json輸出、表輸出

表輸出需要注意字段的映射關系:

這是轉換圖:

 二、執行sql的組件

執行腳本是很常用的一個組件,主要用於將上一步驟的結果作為參數來執行sql語句。

執行每一行:是否要對偶上個步驟的N行的結果一行一行的執行此腳本。

execute as a statment:當做一條完整的語句執行

變量替換:選中后,就可以${date}方式使用變量

quote string:選中后會識別?來表示上步驟傳來的數據。

測試程序:

我們讀取csv文件,並把csv文件中的數據插入到mysql的表中

其中執行sql腳本的配置是:

三、公式

在原來字段的基礎上,使用新的自定義公式產生新的字段。變量用{}括起來。

例子:

我們讀取csv文件,將name字段變為大寫

最終的公式的輸出是:

四、記錄集連接

根據兩個輸入的連接字段選擇連接方式,注意一個問題:關聯的數據源要事先排好序。

五、字段選擇工具

在關聯之后去掉一些不需要的字段,或者修改字段的控制

字段選擇的轉換圖:

csv文件里面包括兩列的數據,id和name,現在我們把id字段名改為了new_id,並且將name字段刪除

字段選擇后的結果:

六、合並記錄

將跨數據源的數據合並在一起的操作,相當於在同一數據庫中的union操作。

 union有數據的相對比較的功能

匹配關鍵字:是兩個數據源數據對比的依據

標志字段是要顯示的兩個數據源的對比結果:

new:原來數據源沒有關鍵字匹配的值,新數據源有關鍵字匹配的值。

delete:原來數據源有關鍵字匹配的值,新數據源沒有關鍵字匹配的值。

changed:原來數據源和新數據源有關鍵字匹配的值,但是其他項修改了。

identical:兩條數據是一致的。

 


免責聲明!

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



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