• 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:UsersAdministrator.kettlekettle.properties

    打开本文件,设置键值对如cla=CHANGELOG1,重启spoon.bat后,start中的变量会自动引用键值对的值

    只有本作业中使用了变量,start的变量一栏才会显示

     
  • 相关阅读:
    Autocomplete 使用——尽信书则不如无书!
    SQL累加注意点
    自己写的一个可行且简单的FTP操作类
    分割表值函数
    转载SQL游标
    一个存储过程包含了很多很多
    转载预防SQL注入攻击之我见
    Jquery温习1
    WMI远程启动软件(某个应用程序)
    struts如何实现国际化(转)
  • 原文地址:https://www.cnblogs.com/purple5252/p/15150771.html
Copyright © 2020-2023  润新知