文档详情

开源ETL工具kettle系列之动态转换.pdf

发布:2019-04-02约6.68千字共4页下载文档
文本预览下载声明
美河学习在线 仅学习参考 摘要:本文主要讨论使用Kettle 来设计一些较为复杂和动态的转换可能使用到的一些技巧,这些技巧可能 会让你在使用Kettle 的时候更加容易的设计更强大的ETL 任务。 动态参数的传递 Kettle 在处理运行时输入参数可以使用JavaScript 来实现,大部分工作只是按照一个模板来处理的 动态参数传递主要使用在像数据清理,调式,测试,完成复杂的条件过滤等等,这种方式一般不会在产品 已经运行稳定了一段时间之后使用,因为我们一般仍然是做定时任务来自动转换数据,所以在开始介绍如 何使用动态参数之前,希望大家能明白不要在产品数据库上做实验,即使你已经知道你的转换有什么影响 并且做了备份,因为这种方法是不可能自动执行的。 Kettle 有两种动态参数传递的方法,一种是非常轻量级的传argument , 另一种是对付较复杂一点情况使用 JavaScript . 下面分别介绍这两种方法。 1. argument 当你在运行一个转换的时候,不管这个转换是一个Job 的一部分还是只有这个转换,你都可以传递参数给 它,当你运行一个转换的时候,会弹出一个 Execution a Transformation 的对话框,让你选择执行转换的 方式,本地执行,远程执行,分布式执行,下面就是日志记录的级别和回放时间,然后是argument 和 variables 的设定。Argument 和 variables 的区别在官方FAQ 里面也有解释。你也可以参考一下官方的 解释和下面解释的异同。 Q : Argument 和 variables 的区别 / A : variables 也可以认为叫做environment variables , 就像它的名字一样,主要是用来设定环境变量的, 比如最常见的:文件的存放地址,smtp 的配置等等,你也可以把它认为是编程语言里面的全局变量,即使 是不同的转换它们也拥有同样的值,而argument 自然就类似与局部变量,只针对一个特定的转换,比如 像是限定结果集的大小和过滤条件。 取得argument 的值 我们在转换之前设置了argument 的值,需要用到的时候就使用get system info 步骤,这个步骤取得在运 行时参数,需要注意的是我们是先设置get system info ,然后在里面决定要使用多少个参数,最多10 个, 每个参数名叫什么,然后我们才能在运行时看到你设置了的参数名后面跟一个要你输入的值,并且参数类 型是不能够指定,全部都当作字符串处理,如果你需要对参数类型有要求,你需要自己转换,使用一个 Mapping 步骤或者Select values 步骤。 取得variable 的值 Variable 的值个数不受限制,你可以在kettle 菜单的set environment 里面设置,也可以使用文件储存这 些值,在第一次运行kettle 之后,kettle 会在%HOME_USER_FOLDER%菜单里面创建一个 .kettle 文件 夹,如果是windows 用户可能就是C:\Documents and Settings\${your user name}\ .kettle 这个文件夹,如 果是linux 用户可能就是/home/${your user name }/.kettle 文件夹,这个文件夹下面有perties 文 件,如果你打开这个文件,你会发现里面有一些以#开头的注释,其中设置了一些像是: PRODUCTION_SERVER = Hercules 这样的键值对,你可以自己定义一些环境变量比如像是smtp 的地 址,ftp 服务器的地址,你放log 文件的目录名等等,当然不能直接编辑这个文件就设置环境变量,要先设 置KETTLE_HOME 环境变量,windows 就是点我的电脑,然后在设置path 的那个地方添加一个 KETTLE_HOME 变量,linux 就是export KETTLE_HOME=’一个目录’,这个目录可以任意地方,不过一般 还是指向kettle 的安装目录或是你自己的文档目录,然后启动kettle 它会创建一个新的.kettle 目录,编辑 里面的perties 文件就可以设置环境变量了. 2. 使用脚本 Kettle 使用的是JavaScript 来作为它的脚本实现,使用的是mozilla 的rhino 1.5r5 版本实现,如果你打算 美河学习在线
显示全部
相似文档