Kettle各個控件要點 (v5.30) 【轉】


http://blog.csdn.net/calmreason/article/details/47613445

Kettle控件的特點:Kettle的控件分類比較細致,功能相對單一也很具體。使用起來很容易掌握。 Kettle一般處理方法:正式由於Kettle控件的細化特點,所以往往需要組合起來使用。組合使用只是從點的角度看問題,還有就是從線的角度看問題。比如,目標表中的各個列其值可能由其他列的值計算得到,這就涉及到列的計算次序。合理選擇計算次序,可以降低計算復雜度和可讀性。

修改kettle文件:修改之后要保存才能生效。

變量與參數:

1 位置參數:【argument】用?的第幾次出現表示第幾個參數 2 命名參數:【parameter】用名字取參數值,命令行的時候是 P = value 3 變量:

設置JVM內存大小

http://itroadmap.sinaapp.com/2014/12/10/kettle5-2-0-java-lang-outofmemoryerror-%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/

變量控件

3.1.1設置變量這里寫圖片描述:把一個字段的值設置成變量,一個變量只能保存一行值!所以將值設置給變量的時候要注意結果集只能有一個元素。設置的變量可以被轉換中的其他控件使用,而不必加入其他控件所在的流。 這里寫圖片描述 這里寫圖片描述 3.1.2 獲取變量這里寫圖片描述:把一個變量的值設置成字段 3.1.3 哪些控件可以使用變量?凡是控件的屬性輸入最后是這里寫圖片描述的都可以使用變量。

輸入

表輸入

這里寫圖片描述表輸入: (1)從數據庫中讀取記錄,最終保存一個select語句; (2)多個轉換或者操作同時讀取一個表的情況應該盡量避免,否則可能會因為鎖操作而影響工作。 (3)從其他ktr文件拷貝而來的表輸入,最好重新配置數據庫連接。 2.0.1 SQL Server數據庫連接配置 這里寫圖片描述 2.0.2 MySQL數據庫連接配置 這里寫圖片描述 2.0.3 如果where條件中使用了變量,則可以使用變量引用方式:

SELECT * FROM ${TABLENAMES}
  • 1
  • 2
  • 1
  • 2

同時勾選:這里寫圖片描述

2.1這里寫圖片描述Excel輸入:從excel文件中讀取數據。 注意: (1)這里最好是xls文件!因為實驗了xlsx文件出現了讀取不到列名的問題。 (2)先選擇【瀏覽】,再點擊【增加】才會使用xls文件!如下圖 這里寫圖片描述

輸出

表輸出

表輸出這里寫圖片描述:將流中的數據寫入到數據庫指定表中;不會自動創建表

Excel輸出

這里寫圖片描述  新版本的kettle支持Excel2007及以后頒布,這樣導出行數就可以大大超過65535行,下面這個是老版本的Excel輸出,建議不要使用 這里寫圖片描述 設置一下使用新版本的excel 這里寫圖片描述 導出字段的格式設置: 默認情況下,excel輸出控件會猜測數據類型,但有時候具體格式需要設置,比如取整:# 這里寫圖片描述 比如日期Date類型的格式化輸出:yyyy/mm/dd hh:mm:ss 這里寫圖片描述 如果使用:y表示年,m表示月,d表示日, h表示時,m表示分,s表示秒,出現的個數表示顯示的位數。 按照行數分割文件: 這里寫圖片描述

4 插入更新

這里寫圖片描述插入更新:比表輸出更好用的一個控件,可以指定目標表的指定字段相等的時候更新, 否則直接插入,還可以選擇更新的時候更新哪些字段。 如果要實現插入,則需要把相等字段添加到下放的【更新字段】中,這樣源表有數據,目標表沒有數據的時候就會執行插入。

5空操作

這里寫圖片描述空操作: a)通常用於判斷分支的一支,還用於操作易於理解 b)用於合並數據,多個來源,自然順序合並,不能保證順序。要求多個來源要滿足:列數相同、列名相同、列類型相同。 c)用於輸出流到多個目的地,這種情況下的默認操作(【分發】輪流輸出數據到多個目的地,每個目的地得到的是流的子集)往往不是你想要的,所以要注意,因為你一般會使用【復制】,使用【復制】會使得每個目的地里的內容都是全集。 d)便於開發階段預覽數據 這里寫圖片描述 5.1 這里寫圖片描述追加流:以先后順序將兩個流的數據合並。要求多個來源要滿足:列數相同、列名相同、列類型相同。

6 JavaScript代碼

這里寫圖片描述JavaScript代碼: (1)長用來創建JavaScript變量,計算之前流中的數據,保存為新的流,供下游使用,變量自動變成上游數據的新追加列。和【設置變量】控件不同,【設置變量控件】只提供一個唯一的值。 (2)你幾乎總是要打開兼容模式,這樣可以幫助你寫JavaScript代碼 這里寫圖片描述 (3)JavaScript幾乎總是用var定義新的變量,如果要將創建的VAR變量計算並輸出到流中,需要手動指定你的這個變量要輸出到流:【獲取變量】 這里寫圖片描述 字符串提取子串:http://blog.csdn.net/calmreason/article/details/48649257 字符串轉換為整數:http://www.w3school.com.cn/jsref/jsref_parseInt.asp

字符串替換:http://blog.csdn.net/chenwei160803/article/details/7000225

 崗級.setValue(崗級.getString().replace("(專業)","副"));
  • 1
  • 1

數字格式化輸出為字符串(參考):http://blog.csdn.net/superch0054/article/details/3789458 JavaScript源代碼:

//Script here
var format = function (number, form) { var forms = form.split('.'); var number = '' + number; var numbers = number.split('.'); var leftnumber = numbers[0].split(''); var exec = function (lastMatch) { if (lastMatch == '0' || lastMatch == '#') { if (leftnumber.length) { return leftnumber.pop(); } else if (lastMatch == '0') { return lastMatch; } else { return ''; } } else { return lastMatch; } } var string = null; string = forms[0].split('').reverse().join('').replace(/./g, exec).split('').reverse().join(''); string = leftnumber.join('') + string; if (forms[1] && forms[1].length) { leftnumber = (numbers[1] && numbers[1].length) ? numbers[1].split('').reverse() : []; string += '.' + forms[1].replace(/./g, exec); } return string.replace("//.$/", ''); }; var no = 'ryxx' + format(MAX_NO_SEC.getInteger(), '000000'); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

如下使用的時候

會生成如下效果:這里寫圖片描述

7流查詢

這里寫圖片描述流查詢:提供左連接追加字段的功能,其中右側被左連接的表通過指定主鍵與坐標主鍵相等來連接,另外指定右表中哪些列要被追加到左表

8增加常量

<img%2vp�c="http: img.blog.csdn.net="" 20150813152717862?="" Ԓ�="" altew73d?這%2#��%hs�o786�%2Ӫ��eȅ�g���o�8��%�q="" �8�\c��y1��gs�?�ul��f)�#^:�$}q�Έ:bb�(2%r��o="" ;��@="" ,b�}�ؿ�a�l�f�}0��d�n?a��|����g:�e‚��thŋ*wcj�}$��sfc?�$4%?^���$q�uÛ����5a�u��r0�����y�,�g�p%�)�qg�="" �b6�}0�x�o�.a���@^�#�����k??֜t�?)�p��="" �c�?�����y�$�d��k���js��tb2u�="" �?���}⯺���?�$�����="" liw�e�="">����#F6 ˵� ��g�#���q�a�fo���z���m���=uC����QJ��m78`�)�_����^tF%?N�z~��N��O�u�L�8%ҼN`9����(a�:�g3R 5E6��%#��883��z ���h�r��5BF�%2 H%��7���%8�,55E5��充,�%�YwW�25B0�%2�q�\�5E5�%2�����}:��輸入之后添加,在表輸入之前不可以添加。http://blog.163.com/lfs9��{�jaigang@126%*�oDblog%��2Fstatic/77436670201403192817833/

9分組

這里寫圖片描述分組:提供比SQL更方便快捷的group by功能,尤其是你分組之后,只想對其中一個求和,其他的只取其中一個的時候! 這里寫圖片描述

10排序記錄

這里寫圖片描述排序記錄:對記錄按照指定的列進行排序,通常是其他控件必須的前奏,排序可以指定多個列

11過濾記錄

這里寫圖片描述過濾記錄:對一列或者多列同時使用BOOL條件,對條件判斷為真的記錄指定后續步驟,對條件判斷為假的記錄指定后續步驟。這個步驟通常和其他步驟結合使用,比如替換指定列為常量。

12將字段設為常量

這里寫圖片描述將字段值設置為常量:可以將制定字段的值設置為固定值,通常是一些狀態值的設置。

13發送郵件

這里寫圖片描述發送郵件:可以從之前的流中獲取流信息,設置好之后就可以發送郵件了。具體實例參考:kettle發送郵件

作業

定時任務的制作

http://blog.csdn.net/calmreason/article/details/49021993

復制記錄到結果

這里寫圖片描述復制記錄到結果:將結果傳遞到下一個轉換中去。這個控件有時候是必不可少的,尤其是多個【轉換】或者【作業】搭建一個更大的任務的時候。 14.2這里寫圖片描述從結果中獲取記錄:取上一個轉換中的數據。 作業和轉換: 1 執行每一個輸入行 這里寫圖片描述 這里寫圖片描述

這個選項如果勾選了之后,前面的轉換結果有幾行這個當前的轉換就會執行多少次。 注意:這個設置

轉換

字段選擇

這里寫圖片描述主要作用(1)是重命名流里面的字段(2)阻止流中的字段進入下一個流程,如果要進入下一個流程要單獨選擇 這里寫圖片描述

主對象樹

清空Kettle緩存

清空緩存的好處就是你之前連接了一個【表輸出】,但是現在修%2�E6%9s��Xʞ�׹�R�4BA��%2_Q��t�?,z]f��dK-��G����-]2S[yj�����PFh������O�B�q~�e�GpOf�[%��ok��"�mWFo �ś�q9" ��16~��[w:��s�����~��B/  A�A�G?F�����G��KB��h!Ş�ɛ��/bq�s�1����k��u3�b})lݏ@�����1T�m1U F�b�f�GL�m���’�”?F?��t.0���z���S{�ɄP5AD��%A�c$l�Gf�ݙ���� U�’�x���R�Ʌ9�*v�, �M,�!���y�{��2�$�xd���"��'64�%�*�"��"A5A1%W�Z��%�es�B/ ։s� ��Wo���*h���i�GL1Y�mW� �b�^����t�NI���#��<,�E


免責聲明!

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



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