【Kettle从零开始】第九弹之Kettle定时任务介绍 | 您所在的位置:网站首页 › kettle修改文件名 › 【Kettle从零开始】第九弹之Kettle定时任务介绍 |
在数据仓库环节ETL定时任务是一个必不可少的一个环节,因为定时任务取决与你的ETL程序抽取业务数据的频率程度(日、周、季、月、年),一般情况下都采用T+1方式来抽取数据。 关于Kettle定时任务需要调用脚本来执行“作业”与“转换”对应脚本名“Kitchen”与“Pan”,如果是NT系统则找.bat结尾,Linux系统则找.sh结尾相应脚本。
需求说明:默认情况下采用T+1方式抽取数据到目标表,也可以通过指定日期参数抽取数据到目标表。
1、Pan参数详解 在命令行中直接运行Pan结果如下: 参数名称 参数值描述 /rep 资源库名称 /user 资源库用户名 /pass 资源库密码 /trans 要启动的转换名称 /dir 目录(不要忘了前缀/) /file 要启动的文件名(转换所在的XML文件) /level 日志等级(基本,详细,调试,行级,错误,没有) /logfile 要写入的日志文件 /listdir 列出资源库里的目录 /listtrans 列出指定目录下的转换 /listrep 列出可用资源库 /exprep 将资源库里的所有对象导出到XML文件中 /norep 不要将日志写到资源库中 /safemode 安全模式下运行 /version 显示版本,校订和构建日期 /param 设置参数名称与参数值=.样例:-param:FOO=bar /listparam 列出关于在指定的作业定义的参数信息。相当于查看某个转换的参数列表 注:另一种参数方法:-file=path –param:key=value,由于Pan在调用参数时需要修改Pan脚本最后一行,把%_cmdline%替换成%*,不然会导致参数传递失败,Kettle在其它高版本上官网已经修改。
2、Kitchen参数详解 在命令行中直接运行Kitchen结果如下: 参数名称 参数值描述 /rep 资源库名称 /user 资源库用户名 /pass 资源库密码 /job 要启动的作业名称 /dir 目录(不要忘了前缀/) /file 要启动的文件名(作业所在的XML文件) /level 日志等级(基本,详细,调试,行级,错误,没有) /logfile 要写入的日志文件 /listdir 列出资源库里的目录 /listjobs 列出指定目录下的作业 /listrep 列出可用资源库 /norep 将资源库里的所有对象导出到XML文件中 /version 显示版本,校订和构建日期 /param 设置参数名称与参数值=.样例:-param:FOO=bar /listparam 列出关于在指定的作业定义的参数信息。相当于查看某个作业的参数列表 /export 导出指定作业的所有链接的资源。该参数是一个ZIP文件的名称。 注:另一种参数方法:-file=path –param:key=value,由于Kitchen在调用参数时需要修改Kitchen脚本最后一行,把%_cmdline%替换成%*,不然会导致参数传递失败,Kettle在其它高版本上官网已经修改。
了解完参数传递说明,下面将开始开发作业,由于【Kettle从零开始】是一套完整的流程,所以作业就不重新开发,在原有的基础上稍加修改即可,修改目的原因有两种,一种是不需要再重新开始节省时间,另一种是方便整个【Kettle从零开始】工程的连贯性。
需求思路:根据目前已经完成的开发需要完善的地方有两点: A:修改参数设置,应该首先判断脚本是否传入参数,如果没传入参数则默认为昨天日期当作参数抽取数据。 B:修改RotKang_Test作业与Set_Param(转换),添加接收参数变量,变量名为YESTERDAY,默认情况下为NULL。 最后编写调用Kitchen脚本程序。
添加RotKang_Test作业变量如下图: (图9.0) 作业设置,快捷键Ctrl+J,设置变量名为:YESTERDAY,默认值为:NULL。 添加Set_Param转换变量如下图: (图9.1) 然后我们把作业中的YESTERDAY变量值传递给Set_Param转换(如果需要在作业中进行先删除再插入操作,可以在变量的下一步放入“SQL”组件)如下图: (图9.2) 转换设置,快捷键Ctrl+T,设置变量名为:YESTERDAY,默认值为:NULL。 设置完成转换变量后,我们通过“Get Variables”组件来获取YESTERDAY变量的值,如下图: (图9.3) 再通过“过滤记录”组件来判断YESTERDAY变量是否有等于NULL。如下图: (图9.4) 如果等于NULL数据流则走“获取系统信息组件”,反之则直接设置变量。如下图: (图9.5) 注:由于自定义的变量与获取系统信息中的变量重名,产生冲突,无法获取到相应的数值,需要通过“字段选择”排除掉YESTERDAY变量,而Yesterday则自动改成Yesterday_1然后再改成Yesterday名,如下图: (图9.6) 最终Set_Param转换数据流程如下图: (图9.7) 完成作业与转换开发,下一步将编写调用Kitchen脚本,脚本程序如下: 脚本名称 Etl_Sch.bat 脚本内容 @echo off set KETTLE_PATH=H:\pentaho\data-integration3.2.0 set JOB_PATH=H:\Txt\Pentaho\从零开始\实例
rem 默认T+1方式参数传递 CALL %KETTLE_PATH%\Kitchen.bat -file=%JOB_PATH%\RotKang_Test.kjb
rem 指定参数日期传递,需要手动修改参数日期手动执行 rem CALL %KETTLE_PATH%\Kitchen.bat -file=%JOB_PATH%\RotKang_Test.kjb -param:YESTERDAY=2014-03-08
最后使用NT自带的定时任务计划调用Etl_Sch.bat脚本,完成全自动式T+1数据抽取。 定时任务步骤:控制面板–>管理工具–>任务计划程序–>创建基本任务,如下图: (图9.8) 名称:ETL定时任务 描述:RotKang定时任务计划 点击下一步,如下图: (图9.9) 选择每天定时,点击下一步如下图: (图9.10) 定时成每天凌晨30分开始执行,点击下一步如下图: (图9.11) 选择启动程序,点击下一步如下图: (图9.12) 输入Etl_Sch.bat文件路径,点击下一步如下图: (图9.13) 最后完成,这样定时任务计划则每天定时T+1方式抽取数据。
如果大家有什么疑问可以在下方留言! |
CopyRight 2018-2019 实验室设备网 版权所有 |