kettle 设置变量

以下只是本人在使用过程中一些经验,可能有误解不对的地方,希望大家指正。

这个控件可以在job中调用,也可以在transformation中使用。下面将分别说明在两个不同任务中调用时的使用方法和需要注意事项。

一、在job任务中使用

在job中设置变量一般都是设置全局变量,在不同转换间使用。首先需要Get System Info用来检索变量,因为我们一般会用来设置时间、路径等一些变量

系统进行检索

第一列选择变量名称,然后选择type找到你需要的类型。如果想把你的输入信息设置为变量,type应该选择command line argument 1.

双击Set Variables, 点击获取变量会获取到你定义的变量,以后调用时加上${变量名}就可以使用了。

设置变量名和值以及属性

valid in the virtual machine: 整个虚拟机将知道这个变量

valid in the parent job:变量仅在父任务中可用

valid in the grand-parent job:变量仅在组父任务中可用

valid in the root job:变量仅在根任务中可用

注意事项:

1. 只接受一行(只能一行)数据来设置变量

2.在本转换中不能调用此变量,因为数据是并行传送的

二、在转换中设置字段为变量参数

新建设置参数的job

指的是参数名和字段来源(就是想用来设置成变量的字段)

因为数据是一行一行传来,需要接受每一行数据,而不是只要第一行

设置变量job里面的内容

在这个job里面需要填写参数名,不然这个job将会获取不到上一步传过来的字段。

设置job里面的属性设置

将输入字段设置为参数, value填写形式如下。

变量设置格式

后面就和全局变量一样可以调用了。

三、在转换中设置变量参数

设置常量或者路径为变量

如果设置参数值为常量或数字,则value可以直接,如上图5所示

如果设置路径作为变量(value里还可以包含变量值),如上6,7。注意的是在调用路径变量的时候加单引号‘’,我是在后面引用变量的时候加的,所以设置的时候没有加,当然也可以在设置value得时候就添加变量,那么在调用的时候就不需要添加单引号了。

时间: 2024-11-29 07:33:27

kettle 设置变量的相关文章

KETTLE设置变量

一.kettle变量类型 kettle变量分为: 1.环境变量 通过 set variables组件设置变量,范围可以是:JVM变量.作业变量.父作业变量.根作业变量.使用时通过${var}或 %%var%%变量方式引用变量 2.属性文件变量 在.kettle目录下的kettle.property文件中设置,可kettle中可以引用 3.命令行参数(相当于位置参数) 命令行参数是指用pan执行转换时传入的参数,在sql中用可以用?占位,也叫位置参数 注意: 不管哪种参数都可以在sql中用${va

Kettle_设置变量的两种方法

一个复杂的kettle作业一般包括很多子作业和转换,在主作业Start后通常会添加一个[设置变量]的流程,该流程的功能是为所有流程的公共变量设置通用值.       主作业添加的[设置变量]针对的是所有流程,如果需要运行某个在作业,就需要将其引用的变量值改为常量才能运行,想当年麻烦,本文介绍两种方法规避该问题 方法一:在子作业中添加设置变量流程 下图中table changlog exists?流程使用变量${cl},但是设置${cl}变量的值在主作业执行,所以执行本作业时会报错  解决方法:在

《软件调试的艺术》笔记--检查和设置变量

1.使用print命令查看变量值 使用print命令(简写为p)可以查看变量值. 使用如下的程序1进行测试. #include <stdio.h> struct node{ int index; struct node* next; }; int main(void) { struct node head; head.index = 1; head.next = NULL; int i; for(i=0; i<3; i++){ head.index++; } return 0; } (g

Set集合设置变量自增长

* 在jsp页面中,有时候需要设置变量进行自增长,像java中的i++, 1)设置变量,<s:set name="abc" value="0"></s:set> 2)在其他的迭代器中(如<s:iterator )就可以计数了,<s:set name="abc" value="#abc+1"></s:set> 3)如果想用迭代后的这个变量abc,例如:<s:if tes

检查和设置变量

转自 http://blog.csdn.net/todd911/article/details/32316985 1.使用print命令查看变量值 使用print命令(简写为p)可以查看变量值. 使用如下的程序1进行测试. [cpp] view plaincopy #include <stdio.h> struct node{ int index; struct node* next; }; int main(void) { struct node head; head.index = 1;

c#设置对象属性——反射实体设置变量

前台如果只传递了一两个数据,在后台请求获取数据设置属性值还能够接受,但是如果传递了大量的数据,就得多次HttpRequest reques[“XXX”]请求获取数据设置属性值,输入的代码量就很大,而且相当耗费时间,这种费时费力的方法是难以接受的.下面为大家提供一个取巧的方法,获取请求数据就变的很简单了,而且可以节省时间.话不多说,直接上代码: C#代码如下: /// <summary> /// 设置对象属性——反射实体设置变量 /// </summary> /// <para

bat文件中批处理设置变量延迟的问题

在bat文件中想实现对变量的赋值和输出,发现设置的变量在后续使用中为空,代码如下: @echo off for %%i in (*) do ( set var=%%i echo %var% ) 理论上,输出结果应为当前命令所在目录里的所有文件名,可实际的输出结果 却为问题分析:这涉及到批处理命令中的变量延迟扩展问题,详细请参考:https://blog.csdn.net/subkiller/article/details/7344509解决方法: @echo off for %%i in (*)

kettle作业(job)调用转换,设置变量,写日志到数据库中【转】

首先建立转换:从数据库表到日志 表输入的设置: 日志设置: 新建job: 转换选择刚才建好的输出日志转换.变量设置如下: 此ID就是转换中的${ID},执行job,可以看到控制台输出日志结果: 黑色字体部分中只写出了id=1的一条记录. 最后补充,将转换的日志写到数据库中:打开转换>ctrl+t>日志选项卡>转换>点击下面的SQL,执行SQL建表.执行完job会在数据库中写入日志记录.

kettle入门(六) 之kettle抽取变量表名表

背景: ods平台的一个很简单的数据抽取需求: 上游系统有一个月表,每个月出上个月数据并放在新建的月表里.例如:20150401出3月份表和数据 TB_B_FT_BROADBAND_201503, 20150501出4月份表和数据 TB_B_FT_BROADBAND_201504.而ods需要每月初等他们数据出来后再抽取过来. 需求很简单,用kettle最常见的表输入和输出抽取即可,但是表输入的select 语句里面的表名需要使用变量. 解决: 使用job kjb如下 完成此需求,如下图,步骤如