一、kettle设置变量中变量活动类型
在kettle中,可以通过通过设置变量来控制作业和转换的流程。而设置变量的第一步就是选择变量活动类型。在kettle中,常用的变量活动类型有三种:系统、父作业和当前作业。
系统变量是在当前系统上定义的,可以在所有kettle活动中使用。常用于定义路径和系统参数等。父作业变量是在父级作业中定义的变量。当前作业变量是在当前作业中定义的变量。通过选择不同的变量活动类型,可以在不同的场景下定义变量。
图1 kette设置变量中变量活动类型
二、kettle设置变量默认值
kettle设置变量时,除了设置变量活动类型,还可以设置变量的默认值。当变量没有被赋值时,kettle会使用默认值来初始化变量。在kettle变量中,常见的默认值有静态的和动态的。
静态默认值在变量被定义时就已经被设置好了,而动态默认值则是在运行时根据确定的条件去生成。例如,你可以根据当前日期设置动态默认值。
图2 kettle设置变量默认值
三、kettle设置变量组件
kettle中,可以将变量设置为全局的,这样在作业或转换中的任何一个组件中都可以访问这个变量。在kettle中,标记为‘Get Variable’的图标表示可以获取全局变量的值。例如,一个作业中可能设置了一个连接数据库需要的变量,这个变量需要在作业中所有的组件中访问,这时可以使用全局变量。
在组件级别上,kettle也可以通过设置变量来实现组件之间的变量传递。例如,在一个转换中,一个文本文件输入组件中读取文本文件名,传递给另一个文本文件输出组件中。这时也需要在组件级别上设置变量。
图3 kettle设置变量组件
四、kettle设置变量用属性文件
在kettle中,有时需要管理大量的变量。为了更好的管理这些变量,可以使用属性文件。属性文件是一种用于配置和国际化的文件,它们可以用于不同的地方,例如设置变量的默认值和描述信息等。
使用属性文件有很多好处,例如,可以将属性分组管理,编写工具可以按照属性文件格式实现读写等。而在kettle中,可以通过使用‘Load values from a file’步骤来加载属性文件,在此步骤中可以指定属性文件的路径、属性名和变量值等。
图4 kettle设置变量用属性文件
五、kettle设置变量和获取变量
在kettle中设置变量和获取变量都很方便。在任何转换或作业中,在添加步骤或组件时,都可以通过添加‘Set Variables’和‘Get Variables’步骤来设置和获取变量。而在kettle中,针对变量的赋值和访问提供了更多的方式。例如,在kettle命令行工具和kettle API中,可以使用相应的函数来对变量进行操作。
图5 kettle设置变量和获取变量
六、kettle设置变量获取不到
在kettle中,如果设置的变量获取不到,或者值不正确,可能是由于设置变量的位置不正确或者步骤之间的顺序不正确造成。为了解决这个问题,可以通过在kettle作业或转换中使用合适的调试技术来检查变量的值。
例如,在转换中,可以使用Set Variables步骤来设置变量的值,并使用Get Variables步骤来测试变量的值。在作业中,则可以使用调试模式或者输出到日志文件来调试变量的值。
七、kettle作业中设置变量
在kettle作业中,设置变量的方式和转换中类似。在作业中,可以使用‘Set Variables’步骤来设置变量,并使用‘Get Variables’步骤来获取变量。与转换不同的是,在作业中使用全局变量时,需要在jovl描述文件中引用变量。例如,在jovl文件中可以通过“&{变量名}”语法来引用变量。
图6 kettle作业中设置变量
八、kettle循环设置变量
kettle中,循环是一个常见的操作,而设置循环变量可以实现循环过程中参数的变化。kettle中循环可以使用‘Loop values from step’步骤,该步骤可以将源流中的字段循环赋值给目标流中的字段。这个赋值过程可以使用变量来实现,如下面的例子:
图7 kettle循环设置变量
九、kettle循环传递变量
kettle中,从一个组件中传递变量到另外一个组件中也是很常见的操作。这个过程可以通过设置变量和属性文件来实现,使用起来相对简单易用。
例如,在数据流转换中,可以使用‘Set Variables’步骤来设置变量的值,并将这个步骤与源节点和目标节点相连。在目标节点中,可以使用‘Get Variables’步骤来获取变量的值。这个过程可以使用组件间的变量传递来实现。
十、kettle转换里设置变量
在kettle转换中,设置变量可以通过设置步骤属性、使用组件间变量传递、使用属性文件等方式实现。其中,设置步骤属性是最常见的方式之一。例如,在文本文件输入步骤中设置变量的值,可以在文本文件输入步骤中设置变量,并且在文本输出步骤中使用这个变量。这个过程中,变量的值会被传递到下一个步骤中。
图8 kettle转换里设置变量
总之,在kettle中设置变量是非常常见的操作,不同场景下需要采用不同的设置方式。在实际开发中,我们需要对kettle的变量操作进行深入了解,才能更好地进行kettle的二次开发和定制。