Kettle使用范例

avts

贡献于2011-05-10

字数:2330 关键词: 数据挖掘

Kettle使用范例 1. 错误处理 在转换步骤的过程中,当某个步骤发生错误时可能要进行额外的步骤处理。因此,在设置时就要求为步骤添加错误处理。以下面的流程为例: 该流程为将源表的数据同步到目标表中,在目标表中人为的设置某个字段的长度小于源表,让其能在处理过程中会报出异常。为了可视化处理结果,将同步的结果输出到XML文件中。 选中“Target Table”步骤,点击鼠标右键,然后选择“Define error handling…”菜单项,将会弹出设置对话框。 在“Target step”中选择后续处理步骤即可。在各个fieldname填上字段的名字,将会在结果集中多出相应的字段,以便后续步骤能读出相应的错误信息。例如界面上的“ErrorDesc”字段,将用于保存错误信息。 以上的数据处理流程处理结束之后,“Success XML Output”步骤生成的XML文件内容为所有同步成功的数据;“Error XML Output”步骤生成的XML文件内容为所有同步错误的数据。 2. 字典翻译 2.1. 单选字典翻译 单选字典翻译要使用到“Stream lookup/流查询”步骤,分别要从业务表和字典表中抽取出数据。 “Query AJXX”步骤负责从业务表中抽取出数据。 “Query AJLX Dictionary”步骤负责从字典表中抽取出字典数据。 “Transform AJLX”步骤负责翻译“ajlx”字段的字典值。 由于使用这种方式翻译单选字段时,要多查询一个字典表,因此最好控制字典表的数据量,以免影响性能。 2.2. 多选字典翻译 由于“Stream lookup”只能实现单值的数据查询,无法实现像多选字典这类多值的数据查询,因此“Stream lookup”步骤无法实现多选字典字段的翻译。 多选字典的翻译,只能通过采用调用存储过程的方式实现,这就要使用到“Call DB Procedure”。 由于“Call DB Procedure”步骤在调用存储过程或是函数时,参数设置不能使用常量,只能调用数据流中的字段值。因此,在调用“Call DB Procedure”步骤之前,要使用“Add constants”步骤来为数据流添加一个常量字段,做为字典种类。 增加了常量字段之后,该字段就可以在“Call DB Procedure”步骤中引用了。 3. 设置转换全局参数 点击主菜单的Transformation菜单项里的“Settings”的子菜单项,调出transfrom设置界面。 选择“Parameters”Tab页,在“Parameters”列表中设置转换流程的全局参数。 在流程设计过程中,可以使用${PARAM_NAME}代表对应全局参数。 4. 批量数据单条记录分别转换 在实际应用中,经常会有这样的一种转换情况:首先要从某个数据源(表或者是格式化文件)中提取出批量数据,然后再对批量数据中的每一条记录分别执行一个完整的数据转换。 这种数据处理流程,在设计时要通过Transformation和Job相结合来实现,以数据传输抽取数据的过程为例:数据传输首先要从增量表中检索出有哪些更新的表,然后再每个表提取出增量数据的主键信息,最后到业务表中取抽取出业务数据,打包成数据文件。 可以查看Kettle程序samples\jobs\process all tables目录下的例子。 4.1. 设计一个总体的Job。 总体流程了分别为“Get list of tables”Transformation和“Extract a table”子Job。 在“Extract a table”子Job中,“Execute for every input row”的选项要选中,才能实现当条记录分别执行“Extract a table”Job流程。 4.2. 设计一个Transformation取批量数据 “Get list of tables”Transformation负责从增量表中取得所有增量表的名字。 Transformation的最后一步,要使用“Copy rows to result”步骤,以便总体Job能读取。 4.3. 设计一个子Job处理单条记录 “Extract a table”子Job负责针对每一个表抽取出增量数据。 在该子Job中,分别设计了两个Transformation:“Define extract tablename variable”和“Extract on table”。 4.3.1. 取单条记录并设置变量 “Define extract tablename variable”Transformation主要是负责从总Job中取出批量数据的单条数据信息,并定义变量信息,以便子Job中的其他Transformation能使用。 “Get rows from result”step负责取得单条数据的信息。 “Get Systemid Info”step负责取出当前时间。 “Select values”step负责将extracttime字段由日期类型转为字符串。 “Define Extract Table variable”step负责设置变量。 “Variable scope type”为变量的作用域,具体根据需求设置。 4.3.2. 执行单条数据的转换 “Extract one table”Transformation负责执行抽取单个表的数据。 “Get table updated record key”step负责抽取出单表的增量数据主键。 “Database join”step负责根据表主键信息抽取出业务数据。 [注意:由于“Database Join”step中存在一个Bug,导致其中的SQL语句执行会报错,原因是SQL语句中的表名为变量,具体情况再议。] “XML Output”step负责将结果输出为XML文件。

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享文档获得金币 ]
4 人已下载

下载文档

相关文档