KETTLE详细设计

上传人:lisu****2020 文档编号:102789874 上传时间:2022-06-07 格式:DOC 页数:32 大小:3.92MB
收藏 版权申诉 举报 下载
KETTLE详细设计_第1页
第1页 / 共32页
KETTLE详细设计_第2页
第2页 / 共32页
KETTLE详细设计_第3页
第3页 / 共32页
资源描述:

《KETTLE详细设计》由会员分享,可在线阅读,更多相关《KETTLE详细设计(32页珍藏版)》请在装配图网上搜索。

1、KETTLE详细设计说明书V0.1变更记录版本文件内容描述日期编写审核批准V0.1创建2014-7-3王小龙1 Kettle界面介绍双击Kettle.exe或者Spoon.bat打开Kettle图形界面化如下:(图1.1)Kettle中有两类设计分别是:Transformation(转换)与Job(作业),Transformation完成针对数据的基础转换,Job则完成整个工作流的控制。Kettle常用三大家族:Spoon、Pan、Kitchen。Spoon:通过图形界面方式设计、运行、调试Job与Transformation。Pan: 通过脚本命令方式来运行Transformation。Ki

2、tchen: 通过脚本命令方式来运行Job,一般就是通过调用Kitchen脚本来完成定时任务。说明:当打开Kettle时显示的是Kettle的相关版本信息与GNU相关协议说明。(图1.2)说明:打开Kettle时弹出的窗口提示以资源库方式登录相关信息,关于乌江水电项目工程存储方式是以XML文件方式来进行存储,所以我就直接点击“没有资源库”。图(1.3)说明:进入Kettle设计界面。提示关于Spoon相关信息,这里直接点击“关闭”按钮。(图1.4)说明:图片中所使用到的字母位置标识说明。(A):Kettle所使用到的菜单栏。(B):在使用Kettle时所涉及使用到的对象。(C):Kettle中

3、所有的组件。(D):根据选择(B)或者(C)显示相应的结果。(E):Kettle设计界面。(图1.5)说明:文件:是对Kettle所生成的Job与Trans进行相关的操作,如:新建、打开、保存、导入、导出等相关操作。(图1.6)说明:编辑:是对Kettle当前打开的Job与Trans进行相关的操作,如:复制、撤销、环境变量显示、资源库查看、图形界面自定义调整(颜色、字体、样式)等相关操作。(图1.7)说明:视图:是对Kettle当前打开的Job与Trans进行放大、缩小相关操作。(图1.8)说明:资源库:是对Kettle中所使用到的资源库进行操作,如:资源库连接、断开、当前用户编辑等操作。(图

4、1.9)说明:转换:是对Kettle当前所打开的Trans进行相关测试功能。(图1.10)说明:作业:是对Kettle当前所打开的Job进行操作,如:运行、复制、参数设置等相关操作。(图1.11)说明:向导:是对Kettle当前所打开的Job或者Trans对其进行一步一步的指导性操作。(图1.12)说明:帮助:查看当前Kettle版本相关信息。2 Kettle数据源连接配置Kettle中对于数据源有作用域的定义,也就是说有全局数据源与局部数据源两种。 首先打开Kettle UI界面,使用快键方式(Ctrl+N)创建一个转换,新建数据源如下图:(图2.0)通过点击“新建”,则出现(图2.1)(图

5、2.1)说明:通过(图2.1)我们可以看到创建数据源时需要配置相应的参数:Connection Name(必填):配置数据源使用名称,如:wjsd_srcHost Name(必填):数据库主机IP地址,如:Database Name(必填):数据库实例名称,如:WJSDTablespace for Data(可选):数据表空间名称Tablespace for indices(可选):数据索引名称Port Number(必填):端口号User Name(必填):用户名Password(必填):密码Access:选择数据库连接方式,ODBC方式则需要配置系统ODBC,JNDI则使用配置jdbc.p

6、roperties文件,默认为Native(JDBC)连接方式,。注:在Kettle中如果在填写框末尾出现$符号标识说明此处可以使用变量参数来定义。填写好数据库连接信息后,点击“Test”按钮,出现效果如(图2.2)(图2.2)说明:配置成功数据源后默认情况下数据源作用域为局部数据源,如果需要把数据源修改成为全局数据源,则选择数据源wjsd_src右击Share保存即可。3 Kettle全量抽取 对于纬表、字典表或者是没有时间戳的表,一般我们都采用全量抽取的方式将业务系统库中的数据抽取到数据仓库中。乌江水电项目需要用到全量抽取的源表有:CIM.MeasurementCIM.Measuremen

7、t_TypeCIM.d_ReservoirCIM.Center_Sys_CodeCIM.CURVE_SCHED_DATACIM.d_dateCIM.CURVE_SCHEDULECIM.WJ_CURVE_TYPECIM.power_System_resourcePSR_TYPE下面以CIM下面的d_Reservoir为例详细描述Kettle全量抽取的过程1、 创建转换(Ctrl+N),转换名称为:d_Reservoir2、 创建数据源连接wjsd_src、wjsd_tag,可参考【Kettle数据源连接配置】3、 在Kettle设计盘中拖入“表输入”、“表输出”两个组件即可4、 执行转换对数据进

8、行抽取5、 查看结果是否与数据源中的数据是否一致步骤1、创建转换(图3.1)说明:当创建转换时点击“核心对象”下方则显示可以在转换中能使用的所有组件。点击“输入”-单击“表输入”把“表输入”组件往空白处拖入即可。(图3.2)说明:双击“表输入”组件弹出(图4.2),输入或选择相应的参数信息。步骤名称:默认为“表输入”,如果想规范化建议填写源表名称信息,以便清楚查询是某张表结构信息数据库连接:选择数据来源数据源名称SQL:编写查询源数据SQL脚本,可以通过“获取SQL查询语句”获取。允许延迟转换:强烈建议默认替换SQL语句里的变量:如果SQL语句中有使用到变量则需要勾选从步骤插入数据:默认执行每

9、一行:默认记录数量限制:0表示默认,如果有特殊需求可以自定义只查询出多少条记录数注:1、 在SQL语句中一定不能加入分号(;),这是初学者很容易犯错的一个地方。2、 如果无法确定SQL语句是否正常时可以通过“预览”来查看SQL语句是否正确。(图3.3)说明:有了源之后则需要有目标,也就是说有我水我们则需要把水通过渠道通向目标如(图4.3)拖入“表输出”后,我们通过按住“Shift”键单击源划向目标“表输出”,则会出现源指向目标的箭头线。双击“表输出”如(图4.3),另外可以选择两个或者两个以上的组件进行位置对齐,可以通过Ctrl+向上箭头、Ctrl+向下箭头、Ctrl+向左箭头、Ctrl+向右

10、箭头。步骤名称:默认为“表输入”,如果想规范化建议填写目标表名称信息,以便清楚查询是某张表结构信息数据库连接:选择数据来目标数据源名称目标模式:schema,Oracle数据库则是用户名。目标表:从源数据输出到目标表名提交记录数:设置数据库提交大小裁剪表:清空目标表数据,相当于Oracle数据库Truncate语法忽略插入错误:当插入数据库出错时则可以忽略,默认忽略18条记录数,记不太清楚Specify database fields:手动指定源与目标字段映射关系,如(图4.4)Main options:如果是表分区则可以指定表分区,一般为默认Database fields:如(图3.4)(图

11、3.4)说明:指定源与目标字段映射关系,点击Get fields匹配字段映射关系。注:在没有勾选“Specify databasefields”情况下,源表字段不能多于目标表的字段数量,否则会出错。(图3.5)说明:点击运行按钮,或按F9,运行这个转换,根据(图3.5)可以查看出转换运行的日志情况。(图3.6)说明:根据(图3.6)可以查看出每个步骤执行的记录数、读、写、输入、输出、更新、拒绝、错误、激活、时间、速度。可以通过查看此处分析当前转换运行效率而断定转换是否需要进行优化。总结:1、 在运行转换时,当前转换是处于并发状态,如果有多个表输入则会同时运行。2、 在设计转换时最好是一个数据流

12、,不要有多条数据流。如果有多条数据流则有可能发生锁表问题。4 Kettle增量抽取对于CIM.WJ_Day_DataCIM.WJ_Run_Crenet_Powerhd.target_dayAPP.DNN_POINT_DAY_VALUEAPP.DNN_OBJECT_DAY_VALUESOA_WJ_AGC_RECORDS_TSOA_WJ_DISPATCH_MON_PLAN_TSOA_WJ_DISPATCH_YEAR_PLAN_TSOA_WJ_REPAIR_TSOA_WJ_RUNDAY_REPORT_Tdaydbplanload_factory下面以traget_day为例,详细描述增量抽取数据。因

13、为是增量的抽取,所以参数的传递是必要的。增量抽取一般都是抽取昨天的数据装载到目标表中。Kettle中参数使用方法有两种:一种是%变量名%,一种是$变量名。这两种方法变量数据类型都是数字类型。1、 创建转换(Ctrl+N),转换名称为:traget_day2、 创建数据源连接wjsd_src、wjsd_tag,可参考【Kettle数据源连接配置】3、 在Kettle设计盘中拖入执行SQL脚本”、“表输入”、“表输出”三个组件4、 执行转换对数据进行抽取5、 查看结果是否与数据源中的数据是否一致 (图 4.1)注:在SQL中使用变量时需要把“是否替换变量”勾选上,否则无法使变量生效。说明:这里需要

14、注意的是后面的限定where条件,因为源表的时间字段是时间类型,我们的参数是数字类型,所以需要根据源表时间字段的不同注意转换。 (图 4.2)说明:这里与全量抽取的表输出差不多。 (图 4.3)说明:这里要考虑到数据出错重跑的问题,如果需要重新插入输入参数日期的数据,就必须要先删除输入参数日期的数据,不然会报错。因为我参数在条件里面,变量替换要打上沟,不然设置的变量会失效。5 Kettle实时数据抽取乌江水电项目实时数据的表有hd.target_realhd.target_dayrtdbRTEMSrtcalcRTSQREALhourdb实时抽取与增量抽取基本上相差不大,只是对时间戳的处理方式不

15、同,以REAL这张表为例,详细描述实时抽取过程的步骤。1、 创建转换(Ctrl+N),转换名称为:traget_day2、 创建数据源连接wjsd_src、wjsd_tag,可参考【Kettle数据源连接配置】3、 在Kettle设计盘中拖入执行SQL脚本”、“表输入”、“表输出”三个组件4、 执行转换对数据进行抽取5、 查看结果是否与数据源中的数据是否一致 (图 5-1)说明:因为实时抽取的表时间戳字段一般都为TIMESTAMP类型,这里where条件对参数的处理必须这样,不然可能会在抽取数据的时候导致数据丢失。 (图 5-2)说明:表输出与增量抽取相同,只是目标表不同。 图(5-3)说明:

16、这里与增量抽取相类似,回跑的时候参数日期的数据必须要删除。同时注意变量替换打上勾。 图(5-4)说明:依次把每个步骤连接起来,顺序如图5-4所示。6 Kettle定时任务在增量抽取过程中,ETL定时任务是一个必不可少的环节,因为定时任务取决与你的ETL程序抽取业务数据的频率程度(日、周、季、月、年),一般情况下都采用T+1方式来抽取数据到目标表中,也可以通过指定日期参数抽取到目标表。6.1 参数变量设置转换首先创建相应的参数变量设置转换(Set_Param.ktr)。对于怎样获取昨天日期,一般通过“获取系统信息”组件获取昨天日期,再通过字段选择转换成yyyy-mm-dd格式,最后设置成变量,设

17、置参数变量为$YESTERDAY。如下图: (图6.1-1)获取相关的日期参数,昨天日期。 (图 6.1-2)由于获取日期是到时分秒,通过字段选择转换成年月日格式。 图(6.1-3)设置参数,点确定时会提示大致意思是“设置的参数不能在当前转换中使用”。 图(6.1-4)依次连接每个步骤,简单的参数设置转换就算完成了。6.2 创建作业(Job)关于Kettle的Job是数据流抽取的重点环节,首先创建一个作业(Job),点击文件新建作业。在作业里面放入START、Transform、Success,如图(6.2-1)所示 图(6.2-1)将事先完成的参数转换Set_Param插入到作业中,添加作业

18、变量: 图(6.2-2)作业设置,快捷键Ctrl+J,设置变量名为:YESTERDAY,默认值为:NULL。添加Set_Param转换变量如下图: 图(6.2-3)然后我们把作业中的YESTERDAY变量值传递给Set_Param转换 图(6.2-4)转换设置,快捷键Ctrl+T,设置变量名为:YESTERDAY,默认值为:NULL。设置完成转换变量后,我们通过“Get Variables”组件来获取YESTERDAY变量的值,如下图: 图(6.2-5)再通过“过滤记录”组件来判断YESTERDAY变量是否有等于NULL。如下图:(图6.2-5)如果等于NULL数据流则走“获取系统信息组件”,

19、反之则直接设置变量。如下图:(图6.2-6)注:由于自定义的变量与获取系统信息中的变量重名,产生冲突,无法获取到相应的数值,需要通过“字段选择”排除掉YESTERDAY变量,而Yesterday则自动改成Yesterday_1然后再改成Yesterday名,如下图:(图6.2-7)最终Set_Param转换数据流程如下图:(图6.2-8)设置好Set_Param后,在job中还需要对参数进行设置,参数名称YESTERDAY,参数值$YESTERDAY 图(6.2-9)将事先完成好的抽取数据流转换添加到JOB中,如下图 图(6.2-10)Transformation2的名称可以自己更改,这里为E

20、TL_DAYDB,点击雪花形状的绿色按钮,找到ETL_DAYDB这个转换,点击确定即可完成对作业的设置。6.3 Kitchen脚本完成作业与转换的开发,下一步将编写Kitchen脚本,Kitchen脚本程序分为增量脚本、全量脚本与实时脚本,脚本程序如下:名称:Etl_Sch_day echo offset kettle_path=C:Kettle4.2set JOB_PATH=C:kettle_repset YE=%date:0,4%set MO=%date:5,2%set DA=%date:8,2%set DG=1set/a vY1=%YE% % 400set/a vY2=%YE% % 4s

21、et/a vY3=%YE% % 100if %vY1%=0 (set var=true) else (if %vY2%=0 (if %vY3%=0 (set var=false) else (set var=true) else (set var=false)set LY=%YE%set LM=%MO%if %MO:0,1%=0 (set MO=%MO:1,1%)if %DA:0,1%=0 (set DA=%DA:1,1%)if %DA% GTR %DG% (set/a LD=%DA%-%DG%) else (if %MO%=1 (set/a LY=%YE%-1) & (set/a LM=12

22、) & (set/a LD=31+%DA%-%DG%) else (set/a LM=%MO%-1if %MO%=3 (if %var%=false (set/a LD=28+%DA%-%DG%) else (set/a LD=29+%DA%-%DG%)for %a in (2 4 6 8 9 11) do (if %MO%=%a (set/a LD=31+%DA%-%DG%)for %b in (5 7 10 12) do (if %MO%=%b (set/a LD=30+%DA%-%DG%)if %LM% LSS 10 set LM=0%LM:-1%if %LD% LSS 10 set L

23、D=0%LD:-1%set strLstDt=%LY%LM%LD%CALL %KETTLE_PATH%Kitchen.bat -file=%JOB_PATH%etl_day_schedule.kjb -param:YESTERDAY=%strLstDt%脚本名称:Etl_Sch_rtecho offset kettle_path=C:Kettle4.2set JOB_PATH=C:kettle_repCALL %KETTLE_PATH%Kitchen.bat -file=%JOB_PATH%etl_real_schedule.kjb -param:YESTERDAY=%date:0,4%dat

24、e:5,2%date:8,2%脚本名称:Etl_Sch_allecho offset kettle_path=C:Kettle4.2set JOB_PATH=C:kettle_repCALL %KETTLE_PATH%Kitchen.bat -file=%JOB_PATH%etl_all_schedule.kjb6.4 定时任务定时任务步骤:控制面板管理工具任务计划程序创建基本任务,如下图: 图 (6.4-1)名称:etl_sche_day描述:可写可不写点击下一步,如下图: 图(6.4-2)选择每天定时,点击下一步如下图: 图(6.4-3)定时成每天早上8点开始执行,点击下一步如图: 图(6.4-4)选择启动程序,点击下一步如下图: 图(6.4-5)输入Etl_Sch_day.bat文件路径,点击下一步如下图: 图(6.4-6)最后完成,这样定时任务计划则每天定时T+1方式抽取数据。实时数据的抽取的定时任务也是类似这样的步骤,不同点在于实时数据的抽取是间歇性的,一般是每隔多少分钟跑一次数据,而不是定时在每天一个时间点跑数。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!