本篇博客主要介紹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,“表輸出”控件的“定義錯誤處理”選項具體操作。