设为首页收藏本站

pentaho爱好者,pentaho中国爱好者社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13558|回复: 4

Pentaho Kettle 变量的体系 scope of variables

[复制链接]

266

主题

0

好友

820

积分

超级版主

Rank: 8Rank: 8

威望
139
在线时间
110 小时
积分
820
帖子
468
itisbi 发表于 2010-11-13 13:04:59 |显示全部楼层
本帖最后由 itisbi 于 2010-11-13 22:50 编辑

the scope of Pentaho Kettle variables

By nesting jobs, you implicitly create a relationship between the jobs. Look at the  following diagram:




Here you can see how a job, and even a transformation, may have parents and grandparents. The main job is called root job. This hierarchy is useful to understand the scope of variables. When you define a variable, you have the option to set the scope, that is, define the places where the variable is visible.



The following table explains which jobs and transformations can access the variable depending on the variable's scope.



Notice:




Summary


First, you learned to define your own variables at run time. You defined variables in one transformation and then used them in other jobs and/or transformations. You also learned to define different scopes for those variables.

After that, you learned to isolate part of a transformation as a subtransformation. You also learned to implement process flows by copying and getting rows, and how to nest jobs. By using all these PDI capabilities, your work will look cleaner and will be more organized.
Finally, you learned to iterate the execution of jobs and transformations.

Let's say that this was a really productive chapter. By now, you should be equipped with enough knowledge to use PDI for developing most of your requirements.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

5

主题

0

好友

35

积分

超级版主

Rank: 8Rank: 8

威望
1
在线时间
11 小时
积分
35
帖子
32
tycon 发表于 2010-11-15 21:14:03 |显示全部楼层
从PDI教程上选取的这部分讲解非常好,通俗易懂,特别是对parent job在层次上的解释。下面是我曾经遇到的问题和思考,相信对看见这个帖子的人有所帮助:

设置变量variable:
由于job的需要,要在这个job的第一个转换中设置一个变量,在这个job的第二个转换中调用。设置变量做了一个简单的测试,先做一个生成变量的转换set cube variable:

左侧步骤生成一个值:weekofyear:18,右侧利用设置变量步骤将其设置成在上述job中生效。

如图所示即设置成功。但是这里面出现了一个问题,单独运行这个转换时,设置变量的这个步骤出现错误,细看nohup.out日志,有这样的提示:
INFO  10-11 15:30:46,891 - Set Variables - Setting environment variables...
ERROR 10-11 15:30:46,891 - Set Variables - Unexpected error :
ERROR 10-11 15:30:46,891 - Set Variables - org.pentaho.di.core.exception.KettleStepException:
Can't set variable [WEEKOFYEAR] on parent job: the parent job is not available
org.pentaho.di.trans.steps.setvariable.SetVariable.setValue(SetVariable.java:232)
org.pentaho.di.trans.steps.setvariable.SetVariable.processRow(SetVariable.java:83)
org.pentaho.di.trans.step.RunThread.run(RunThread.java:40)
java.lang.Thread.run(Thread.java:595)
INFO  10-11 15:30:46,891 - Set Variables - íê3é′|àí (I=0, O=0, R=1, W=0, U=0, E=1
INFO  10-11 15:30:46,892 - set cube variable - set cube variable
INFO  10-11 15:30:46,892 - set cube variable - set cube variable

重要的提示是这样一条:Can't set variable [WEEKOFYEAR] on parent job: the parent job is not available。居然说parent job是无效的,可是明明有父任务的啊:

经过实践检验,原来是这样的:set variable中设定的变量生效范围,大小是这样排列的:Valid in the Java Virtual Machine>Valid in the root job>Valid in the grand-parent job>Valid in the parent job。意思都比较好理解,一般情况下对后三种情况进行设置。现在的情况是这个转换只有一个真正的父任务,而这个父任务之上再没有其他的父任务。因此我开始是这样理解的,在这种情况下root job、grand-parent job和parent job应该是等同的,无论选择那一个,结果都应该相同。但实际情况是只有在选择root job的情况下结果才不会报错,我便有一个推断:kettle对任务级别的认定,是自上而下,首先认为所有的job都是root job,再依次往下,对于只有一个级别的job而言,当然首先也是root job。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

回复

使用道具 举报

266

主题

0

好友

820

积分

超级版主

Rank: 8Rank: 8

威望
139
在线时间
110 小时
积分
820
帖子
468
itisbi 发表于 2010-11-18 00:38:27 |显示全部楼层
本帖最后由 itisbi 于 2010-11-18 00:40 编辑

关于 Pentaho  Kettle 内部变量的分类——从变量调用的角度应该分为:静态变量和动态变量两类

关于静态变量的使用和设置:           Edit 》 Set Environment Varibles


关于动态变量的使用和设置:           动态的赋值,以及动态的调用
外面的世界很精彩,我出来会不会失败!
回复

使用道具 举报

1

主题

0

好友

27

积分

书童

Rank: 1

威望
2
在线时间
2 小时
积分
27
帖子
14
vvkiller 发表于 2012-2-17 11:28:45 |显示全部楼层
学习了。。。求版主多发点资料,谢谢了!
不求淫荡惊天下,但求风骚动世人。
回复

使用道具 举报

0

主题

0

好友

45

积分

书童

Rank: 1

威望
1
在线时间
6 小时
积分
45
帖子
22
nurseryboy 发表于 2012-4-17 15:08:35 |显示全部楼层
学习了,求版主一定要多多多的发布资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|pentaho爱好者,pentaho中国爱好者社区 ( 鄂ICP备10205388号 )  

GMT+8, 2018-11-19 14:04 , Processed in 0.156250 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部