kettle參數、變量詳細講解


kettle 3.2 以前的版本里只有 variable 和 argument,kettle 3.2 中,又引入了 parameter 概念;variable 即environment variables(環境變量或全局變量),即使是不同的轉換它們也擁有同樣的值;而argument(位置參數)和parameter(命名參數),可以映射為局部變量,只針對一個特定的轉換,比如像是限定結果集的大小和過濾條件。

1、     variable(變量)

variables 也可以認為叫做environment variables , 就像它的名字一樣,主要是用來設定環境變量的,比如最常見的:文件的存放地址,smtp的配置等等,你也可以把它認為是編程語言里面的全局變量,即使是不同的轉換它們也擁有同樣的值;

變量可以用在轉換或作業中,可以通過在轉換中使用 Set Variable 步驟定義或在kettle.properties文件中定義,文件的路徑默認如下:

$HOME/.kettle (Unix/Linux/OSX)

C:\Documents andSettings\<username>\.kettle\ (Windows)

C:\Users\<username>\.kettle\(Windows Vista)

 

1.1、kettle.properties文件中定義全局變量

      打開文件,直接在里面定義,如: TODAY=to_char(sysdate,'yyyy-mm-dd'),這里支持數據庫函數,說的更直白點,就是這里定義是個啥,那么在transformation里邊取到的它就是啥。在需要的地方,直接%%V_YES_DATE%%,或者${V_YES_DATE}就可以得到。需要提醒的是如果編輯中文,需要navationtoascii工具或在eclipse中編輯。定義后保存重啟spoon才生效。

 

2、     arument(位置參數)

      kettle 3.2 以前的版本里只有 argument,也叫Positional arguments,就是最多能設置的 10 個命令行參數,通過在命令行參數的位置來區別

3、     parameter(命名參數)

在 kettle 3.2 中,又引入了 parameter 概念,可以通過名稱來區別,並可以在命令行中通過/param:name=value 的方式設置設置參數, 另外/listparam 可以列出一個ktr 或 kjb 里定義的parameter。

命名參數可以在轉換或作業的設置對話框中定義,定義時給定默認值;當在SPOON中運行作業或轉換時,在運行對話框中輸入命名參數的值。在命令行中運行時,也可以通過-param:name=value給每個命名參數賦值,param:name=value在命令行中一個整體塊,視為命令的一個參數。

例:運行job.kjb文件,有兩個參數files.dir=/opt/files 、max.date=2010-06-02

Linux: ./kitchen.sh-file:job.kjb -param:files.dir=/opt/files -param:max.date=2010-06-02
Windows: Kitchen.bat -file:job.kjb “-param:files.dir=/opt/files”“-param:max.date=2010-06-02″

命名參數可作為變量,在運行時命名參數並映射為變量。如果你定義了命名參數為foo,你可以在任何地方引用通過${foo}.

 

命名參數使用需要在轉換、job中設置命名參數

windows下參數必須加雙引號

執行命令:

Linux: ./kitchen.sh-file:job.kjb -param:files.dir=/opt/files -param:max.date=2010-06-02
Windows: Kitchen.bat -file:job.kjb “-param:files.dir=/opt/files”“-param:max.date=2010-06-02″

例子圖片見附件

 

 

 

 

 

				<script>
					(function(){
						function setArticleH(btnReadmore,posi){
							var winH = $(window).height();
							var articleBox = $("div.article_content");
							var artH = articleBox.height();
							if(artH > winH*posi){
								articleBox.css({
									'height':winH*posi+'px',
									'overflow':'hidden'
								})
								btnReadmore.click(function(){
									articleBox.removeAttr("style");
									$(this).parent().remove();
								})
							}else{
								btnReadmore.parent().remove();
							}
						}
						var btnReadmore = $("#btn-readmore");
						if(btnReadmore.length>0){
							if(currentUserName){
								setArticleH(btnReadmore,3);
							}else{
								setArticleH(btnReadmore,1.2);
							}
						}
					})()
				</script>
				</article>

Kettle_設置變量的兩種方法

      一個復雜的kettle作業一般包括很多子作業和轉換,在主作業Start后通常會添加一個【設置變量】的流程,該流程的功能是為所有流程的公共變量設置通用值。

      主作業添加的【設置變量】針對的是所有流程,如果需要運行某個在作業,就需要將其引用的變量值改為常量才能運行,想當年麻煩,本文介紹兩種方法規避該問題

 

方法一:在子作業中添加設置變量流程

下圖中table changlog exists?流程使用變量${cl},但是設置${cl}變量的值在主作業執行,所以執行本作業時會報錯

 解決方法:在table changlog exists?流程前添加【設置變量】流程用於設置${cl}的值

 

方法二:設置全局變量

C:\Users\Administrator\.kettle\kettle.properties

打開本文件,設置鍵值對如cla=CHANGELOG1,重啟spoon.bat后,start中的變量會自動引用鍵值對的值

只有本作業中使用了變量,start的變量一欄才會顯示

 


免責聲明!

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



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