Kettle,"Job"中設置變量並在"轉換"中使用。

 

        本篇博客主要介紹Job中自定義變量,並將變量傳遞到轉換中運用。我使用的Kettle工具版本是7.1 .

 

        如下圖1、圖2所示,是本篇博客需要講解的Job、轉換。其中,圖一Job中的 "START"控件、 "設置變量"控件、"轉換" 控件均來自 Job 中的 "通用" 列表,如圖3所示。

                                                                              圖片1

 

                                                                              圖片2

 

1、對 job_table_import_process.kjb 文件介紹,如下圖3、圖4、 圖5 、圖6 所示。 圖4、圖5,“設置變量”控件中, "變量有效範圍" 表示該控件的範圍。"變量替換"屬性需要勾選, 變量界面中設置的變量名嚴格區分大小寫,變量有效範圍表示該變量的範圍。 圖6,"轉換"控件中, "Transformation: " 輸入框中, ' ${Internal.Entry.Current.Directory}/ ' 表示當前目錄, job_table_import_process.kjb 文件、table_import_process.ktr 文件如圖7表示。

                                                                              圖片3

 

                                                                              圖片4

 

                                                                              圖片5

 

                                                                              圖片6

 

                                                                              圖片7

 

2、table_import_process.ktr 文件中“表輸入”控件,如下圖8所示。 SQL輸入框中,以 ${變量名} 的形式引用 job 中設置的變量, 變量名嚴格區分大小寫。 在表輸入界面中,記得勾選 " 替換SQL 語句裏的變量 " 屬性,否則 job 中定義的變量名無法使用。

                                                                              圖片8

 

3、table_import_process.ktr 文件中“寫日誌”控件,如下圖9所示。 先選擇“日誌級別”, 之後是否定義日誌頭文件信息,可自己定義。在"字段"界面,由於 "表輸入" 控件中引用自定義變量, 若點擊“獲取字段” 選項,則會報錯。因此,字段界面中的 id、name、 create_date 這3個字段,是我自己手動輸入。這3個字段來自 "表輸入"控件中SQL界面 SELECT 後的 字段名。

                                                                              圖片9

 

啓動 job 後,kettle 腳本運行後的日誌如下所示:

2020/01/13 23:03:56 - Carte - Installing timer to purge stale objects after 1440 minutes.
2020/01/13 23:04:47 - org.pentaho.di.trans.steps.writetolog.WriteToLogMeta@7235f92b - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : 因爲一個錯誤無法從以前的步驟裏獲取字段
2020/01/13 23:04:55 - Spoon - Spoon
2020/01/13 23:06:04 - Spoon - Spoon
2020/01/13 23:06:11 - Spoon - Spoon
2020/01/13 23:07:23 - Spoon - Spoon
2020/01/13 23:07:30 - Spoon - Spoon
2020/01/13 23:08:31 - Spoon - Spoon
2020/01/13 23:08:39 - Spoon - Spoon
2020/01/13 23:08:57 - Spoon - Spoon
2020/01/13 23:30:03 - org.pentaho.di.trans.steps.writetolog.WriteToLogMeta@7235f92b - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : 因爲一個錯誤無法從以前的步驟裏獲取字段
2020/01/13 23:50:39 - Spoon - Spoon
2020/01/14 00:06:01 - Spoon - 正在開始任務...
2020/01/14 00:06:01 - job_table_import_process - 開始執行任務
2020/01/14 00:06:01 - job_table_import_process - 開始項[設置變量]
2020/01/14 00:06:01 - job_table_import_process - 開始項[轉換]
2020/01/14 00:06:01 - 轉換 - Loading transformation from XML file [file:///D:/coding_Myself/Kettle-Java/Project_01/03_表輸入_定義變量/table_import_process.ktr]
2020/01/14 00:06:01 - 轉換 - Using run configuration [Pentaho local]
2020/01/14 00:06:01 - 轉換 - Using legacy execution engine
2020/01/14 00:06:01 - table_import_process - 爲了轉換解除補丁開始  [table_import_process]
2020/01/14 00:06:01 - 表輸入.0 - Finished reading query, closing connection.
2020/01/14 00:06:01 - 表輸入.0 - 完成處理 (I=2, O=0, R=0, W=2, U=0, E=0)
2020/01/14 00:06:01 - 寫日誌.0 - 
2020/01/14 00:06:01 - 寫日誌.0 - ------------> 行號 1------------------------------
2020/01/14 00:06:01 - 寫日誌.0 - log日誌爲:
2020/01/14 00:06:01 - 寫日誌.0 - 
2020/01/14 00:06:01 - 寫日誌.0 - id = 1002
2020/01/14 00:06:01 - 寫日誌.0 - name = vx3
2020/01/14 00:06:01 - 寫日誌.0 - create_date = 2020/01/11 08:15:20.000000000
2020/01/14 00:06:01 - 寫日誌.0 - 
2020/01/14 00:06:01 - 寫日誌.0 - ====================
2020/01/14 00:06:01 - 寫日誌.0 - 
2020/01/14 00:06:01 - 寫日誌.0 - ------------> 行號 2------------------------------
2020/01/14 00:06:01 - 寫日誌.0 - log日誌爲:
2020/01/14 00:06:01 - 寫日誌.0 - 
2020/01/14 00:06:01 - 寫日誌.0 - id = 1002
2020/01/14 00:06:01 - 寫日誌.0 - name = vx
2020/01/14 00:06:01 - 寫日誌.0 - create_date = 2020/01/11 08:15:20.000000000
2020/01/14 00:06:01 - 寫日誌.0 - 
2020/01/14 00:06:01 - 寫日誌.0 - ====================
2020/01/14 00:06:01 - 寫日誌.0 - 完成處理 (I=0, O=0, R=2, W=2, U=0, E=0)
2020/01/14 00:06:01 - job_table_import_process - 完成作業項[轉換] (結果=[true])
2020/01/14 00:06:01 - job_table_import_process - 完成作業項[設置變量] (結果=[true])
2020/01/14 00:06:01 - job_table_import_process - 任務執行完畢
2020/01/14 00:06:01 - Spoon - 任務已經結束.

 

                                                                              圖片10

 

 

上一篇博客:  Kettle,“表輸出”控件的“定義錯誤處理”選項具體操作。       

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章