KETTLE详细设计.docx

上传人:b****5 文档编号:6952623 上传时间:2023-01-13 格式:DOCX 页数:27 大小:2.64MB
下载 相关 举报
KETTLE详细设计.docx_第1页
第1页 / 共27页
KETTLE详细设计.docx_第2页
第2页 / 共27页
KETTLE详细设计.docx_第3页
第3页 / 共27页
KETTLE详细设计.docx_第4页
第4页 / 共27页
KETTLE详细设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

KETTLE详细设计.docx

《KETTLE详细设计.docx》由会员分享,可在线阅读,更多相关《KETTLE详细设计.docx(27页珍藏版)》请在冰豆网上搜索。

KETTLE详细设计.docx

KETTLE详细设计

KETTLE详细设计说明书

V0.1

变更记录

版本

文件内容描述

日期

编写

审核

批准

V0.1

创建

2014-7-3

王小龙

1Kettle界面介绍

双击Kettle.exe或者Spoon.bat打开Kettle图形界面化如下:

1.1)

(图Kettle完成针对数据的,Transformation(转换)与Job(作业)中有两类设计分别是:

Transformation则完成整个工作流的控制。

基础转换,Job。

、KitchenSpoonKettle常用三大家族:

、Pan:

Transformation。

Spoon通过图形界面方式设计、运行、调试Job与:

通过脚本命令方式来运行TransformationPan:

脚本来完成定时任务。

Kitchen通过脚本命令方式来运行Job,一般就是通过调用Kitchen说明:

相关协议说明。

GNU的相关版本信息与Kettle时显示的是Kettle当打开.

1.2)(图关于乌江水电项目工程存Kettle时弹出的窗口提示以资源库方式登录相关信息,明:

打开说。

“没有资源库”储方式是以XML文件方式来进行存储,所以我就直接点击

(1.3)图按钮。

”关闭“相关信息,这里直接点击Spoon设计界面。

提示关于Kettle进入说明:

图1.4)(图片中所使用到的字母位置标识说明。

说明:

所使用到的菜单栏。

(A):

Kettle时所涉及使用到的对象。

在使用Kettle(B)Kettle中所有的组件。

(C)显示相应的结果。

(C)或者D):

根据选择(B)(设计界面。

Kettle(E)

1.5)(图说明:

进行相关的操作,如:

新建、打开、保存、导入、Trans与Job所生成的Kettle文件:

是对.

导出等相关操作。

1.6)(图说明:

进行相关的操作,如:

复制、撤销、环境变量显与Trans编辑:

是对Kettle当前打开的Job等相关操作。

(颜色、字体、样式)示、资源库查看、图形界面自定义调整

1.7)(图说明:

进行放大、缩小相关操作。

Trans与Job当前打开的Kettle视图:

是对.

1.8)图(说明:

中所使用到的资源库进行操作,如:

资源库连接、断开、当前用户编辑Kettle资源库:

是对等操作。

图(1.9)说明:

进行相关测试功能。

Trans当前所打开的Kettle转换:

是对.

图1.10)(说明:

进行操作,如:

运行、复制、参数设置等相关操作。

Kettle当前所打开的Job作业:

是对

1.11)(图说明:

对其进行一步一步的指导性操作。

Trans或者Job当前所打开的Kettle向导:

是对.

图1.12)(说明:

Kettle版本相关信息。

帮助:

查看当前

数据源连接配置2KettleKettle中对于数据源有作用域的定义,也就是说有全局数据源与局部数据源两种。

创建一个转换,新建数据源如下图:

KettleUI界面,使用快键方式(Ctrl+N)首先打开

2.0)图(

通过点击“新建”,则出现(图2.1)

2.1)(图说明:

我们可以看到创建数据源时需要配置相应的参数:

图2.1)通过(wjsd_src):

配置数据源使用名称,如:

ConnectionName(必填192.168.1.254IP地址,如:

)HostName(必填:

数据库主机:

数据库实例名称,如:

WJSDDatabaseName(必填)):

数据表空间名称TablespaceforData(可选:

数据索引名称Tablespaceforindices(可选):

端口号PortNumber(必填):

用户名必填)UserName():

密码必填Password(则使用配置JNDIODBCODBC方式则需要配置系统,Access:

选择数据库连接方式,。

Native(JDBC)连接方式,文件,默认为jdbc.properties符号标识说明此处可以使用变量参数来定义。

中如果在填写框末尾出现注:

在Kettle$2.2)

图(按钮,出现效果如”Test“填写好数据库连接信息后,点击

2.2)

图(

说明:

如果需要把数据源修改成为全局配置成功数据源后默认情况下数据源作用域为局部数据源,Share保存即可。

数据源,则选择数据源wjsd_src右击

全量抽取3Kettle对于纬表、字典表或者是没有时间戳的表,一般我们都采用全量抽取的方式将业务系

统库中的数据抽取到数据仓库中。

乌江水电项目需要用到全量抽取的源表有:

CIM.Measurement

CIM.Measurement_Type

CIM.d_Reservoir

CIM.Center_Sys_Code

CIM.CURVE_SCHED_DATA

CIM.d_date

CIM.CURVE_SCHEDULE

CIM.WJ_CURVE_TYPE

CIM.power_System_resource

PSR_TYPE

下面以CIM下面的d_Reservoir为例详细描述Kettle全量抽取的过程

1、创建转换(Ctrl+N),转换名称为:

d_Reservoir

2、创建数据源连接wjsd_src、wjsd_tag,可参考【Kettle数据源连接配置】

3、在Kettle设计盘中拖入“表输入”、“表输出”两个组件即可

4、执行转换对数据进行抽取

5、查看结果是否与数据源中的数据是否一致

步骤1、创建转换

图3.1)(

说明:

单”--下方则显示可以在转换中能使用的所有组件。

点击“核心对象”“输入当创建转换时点击组件往空白处拖入即可。

”表输入“把”表输入“击

3.2)

图(说明:

,输入或选择相应的参数信息。

图4.2)表输入”组件弹出(“双击,如果想规范化建议填写源表名称信息,以便清楚查询是某张表表输入”步骤名称:

默认为“结构信息数据库连接:

选择数据来源数据源名称获取。

SQL获取查询语句…”SQL:

编写查询源数据SQL脚本,可以通过“允许延迟转换:

强烈建议默认语句中有使用到变量则需要勾选语句里的变量:

如果SQLSQL替换从步骤插入数据:

默认执行每一行:

默认0表示默认,如果有特殊需求可以自定义只查询出多少条记录数记录数量限制:

注:

,这是初学者很容易犯错的一个地方。

分号(;)语句中一定不能加入、1在SQL

语句是否正确。

SQL来查看”预览“语句是否正常时可以通过SQL如果无法确定、2.

3.3)

图(说明:

4.3)图有了源之后则需要有目标,也就是说有我水我们则需要把水通过渠道通向目标如(,则会出现源指向目标的”“表输出后,我们通过按住“Shift”键单击源划向目标拖入“表输出”可,另外可以选择两个或者两个以上的组件进行位置对齐,如(图4.3)箭头线。

双击“表输出”向右箭头。

Ctrl+向左箭头、Ctrl+向下箭头、以通过Ctrl+向上箭头、Ctrl+,如果想规范化建议填写目标表名称信息,以便清楚查询是某张”步骤名称:

默认为“表输入表结构信息数据库连接:

选择数据来目标数据源名称Oracle数据库则是用户名。

schema目标模式:

,目标表:

从源数据输出到目标表名提交记录数:

设置数据库提交大小语法Oracle数据库Truncate裁剪表:

清空目标表数据,相当于18忽略插入错误:

当插入数据库出错时则可以忽略,默认忽略条记录数,记不太清楚4.4)图:

手动指定源与目标字段映射关系,如Specifydatabasefields(Mainoptions:

如果是表分区则可以指定表分区,一般为默认3.4)

图(:

如Databasefields

3.4)

图(

说明:

Getfields匹配字段映射关系。

指定源与目标字段映射关系,点击否则会出错。

情况下,Specifydatabasefields在没有勾选注:

“”源表字段不能多于目标表的字段数量,

(图3.5)

说明:

点击运行按钮,或按F9,运行这个转换,根据(图3.5)可以查看出转换运行的日志情况。

3.6)(图说明:

可以查看出每个步骤执行的记录数、读、写、输入、输出、更新、拒绝、错误、3.6)(图根据激活、时间、速度。

可以通过查看此处分析当前转换运行效率而断定转换是否需要进行优化。

总结:

在运行转换时,当前转换是处于并发状态,如果有多个表输入则会同时运行。

、1

在设计转换时最好是一个数据流,不要有多条数据流。

如果有多条数据流则有可能发2、生锁表问题。

增量抽取4Kettle对于

CIM.WJ_Day_Data

CIM.WJ_Run_Crenet_Power

hd.target_day

APP.DNN_POINT_DAY_VALUE

APP.DNN_OBJECT_DAY_VALUE

SOA_WJ_AGC_RECORDS_T

SOA_WJ_DISPATCH_MON_PLAN_T

SOA_WJ_DISPATCH_YEAR_PLAN_T

SOA_WJ_REPAIR_T

SOA_WJ_RUNDAY_REPORT_T

daydb

planload_factory

下面以traget_day为例,详细描述增量抽取数据。

因为是增量的抽取,所以参数的传递是必要的。

增量抽取一般都是抽取昨天的数据装载到目标表中。

Kettle中参数使用方法有两种:

一种是%%变量名%%,一种是${变量名}。

这两种方法变量数据类型都是数字类型。

1、创建转换(Ctrl+N),转换名称为:

traget_day

2、创建数据源连接wjsd_src、wjsd_tag,可参考【Kettle数据源连接配置】

3、在Kettle设计盘中拖入''执行SQL脚本”、“表输入”、“表输出”三个组件

4、执行转换对数据进行抽取

5、查看结果是否与数据源中的数据是否一致

(图4.1)

注:

在SQL中使用变量时需要把“是否替换变量”勾选上,否则无法使变量生效。

说明:

这里需要注意的是后面的限定where条件,因为源表的时间字段是时间类型,我们的参数是数字类型,所以需要根据源表时间字段的不同注意转换。

4.2)(图

说明:

这里与全量抽取的表输出差不多。

4.3(图)

就必须如果需要重新插入输入参数日期的数据,这里要考虑到数据出错重跑的问题,说明:

要先删除输入参数日期的数据,不然会报错。

因为我参数在条件里面,变量替换要打上沟,不然设置的变量会失效。

5Kettle实时数据抽取

乌江水电项目实时数据的表有

hd.target_real

hd.target_day

rtdb

RTEMS

rtcalc

RTSQ

REAL

hourdb

REAL这张表实时抽取与增量抽取基本上相差不大,只是对时间戳的处理方式不同,以为例,详细描述实时抽取过程的步骤。

1、创建转换(Ctrl+N),转换名称为:

traget_day

2、创建数据源连接wjsd_src、wjsd_tag,可参考【Kettle数据源连接配置】

3、在Kettle设计盘中拖入''执行SQL脚本”、“表输入”、“表输出”三个组件

4、执行转换对数据进行抽取

5、查看结果是否与数据源中的数据是否一致

)(图5-1

条件对参数的whereTIMESTAMP说明:

因为实时抽取的表时间戳字段一般都为类型,这里处理必须这样,不然可能会在抽取数据的时候导致数据丢失。

5-2)(图

说明:

表输出与增量抽取相同,只是目标表不同。

图(5-3)

同时注意变量替换这里与增量抽取相类似,说明:

回跑的时候参数日期的数据必须要删除。

打上勾。

)5-4图(

所示。

说明:

依次把每个步骤连接起来,顺序如图5-4定时任务6KettleETL因为定时任务取决与你的ETL定时任务是一个必不可少的环节,在增量抽取过程中,方式来抽取数,一般情况下都采用T+1程序抽取业务数据的频率程度(日、周、季、月、年)据到目标表中,也可以通过指定日期参数抽取到目标表。

参数变量设置转换6.1

首先创建相应的参数变量设置转换(Set_Param.ktr)再通过字段选择转换组件获取昨天日期,获取系统信息对于怎样获取昨天日期,一般通过“”。

如下图:

格式,最后设置成变量,设置参数变量为成yyyy-mm-dd${YESTERDAY}

)(图6.1-1

获取相关的日期参数,昨天日期。

(图6.1-2)由于获取日期是到时分秒,通过字段选择转换成年月日格式。

)图(6.1-3

设置的参数不能在当前转换中使用”设置参数,点确定时会提示大致意思是“

)图(6.1-4

依次连接每个步骤,简单的参数设置转换就算完成了。

(Job)

创建作业6.2

新—,点击文件Job关于Kettle的是数据流抽取的重点环节,首先创建一个作业(Job))所示6.2-1如图(Success,、Transform、START作业。

在作业里面放入—建

6.2-1)图(

Set_Param插入到作业中,添加作业变量:

将事先完成的参数转换

6.2-2)图(

,默认值为:

NULL。

YESTERDAYCtrl+J作业设置,快捷键,设置变量名为:

Set_Param添加转换变量如下图:

图(6.2-3)

然后我们把作业中的YESTERDAY变量值传递给Set_Param转换

)图(6.2-4

NULL。

YESTERDAY转换设置,快捷键Ctrl+T,设置变量名为:

,默认值为:

YESTERDAY变量的值,如下图:

“GetVariables”组件来获取设置完成转换变量后,我们通过

)图(6.2-5

如下图:

NULL变量是否有等于YESTERDAY组件来判断”过滤记录“再通过.

6.2-5)

图(”,反之则直接设置变量。

如下图:

NULL数据流则走“获取系统信息组件如果等于

(图6.2-6)注:

由于自定义的变量与获取系统信息中的变量重名,产生冲突,无法获取到相应的数值,然后再改Yesterday_1则自动改成变量,而排除掉字段选择需要通过“”YESTERDAYYesterday名,如下图:

Yesterday成.

6.2-7)(图转换数据流程如下图:

最终Set_Param

6.2-8)

图(

,参数值jobSet_Param设置好后,在中还需要对参数进行设置,参数名称YESTERDAY${YESTERDAY}

)图(6.2-9

中,如下图将事先完成好的抽取数据流转换添加到JOB

6.2-10)图(

,点击雪花形状的绿色按钮,找到ETL_DAYDBTransformation2的名称可以自己更改,这里为这个转换,点击确定即可完成对作业的设置。

ETL_DAYDB6.3Kitchen脚本脚本程序分为增量脚本、全量脚本,KitchenKitchen完成作业与转换的开发,下一步将编写脚本与实时脚本,脚本程序如下:

名称:

Etl_Sch_day

@echooff

kettle_path=C:

\Kettle4.2set

setJOB_PATH=C:

\kettle_rep

setYE=úte:

~0,4%

setMO=úte:

~5,2%

setDA=úte:

~8,2%

setDG=1

set/avY1=%YE%%%400

set/avY2=%YE%%%4

set/avY3=%YE%%%100

if%vY1%==0(setvar=true)else(if%vY2%==0(if%vY3%==0(setvar=false)else(setvar=true))

else(setvar=false))

setLY=%YE%

setLM=%MO%

if%MO:

~0,1%==0(setMO=%MO:

~1,1%)

ifú:

~0,1%==0(setDA=ú:

~1,1%)

ifú%GTR%DG%(set/aLD=ú%-%DG%)else(

if%MO%==1(set/aLY=%YE%-1)&(set/aLM=12)&(set/aLD=31+ú%-%DG%)else(

set/aLM=%MO%-1

if%MO%==3(if%var%==false(set/aLD=28+ú%-%DG%)else(set/aLD=29+ú%-%DG%))

for%%ain(2468911)do(if%MO%==%%a(set/aLD=31+ú%-%DG%))

for%%bin(571012)do(if%MO%==%%b(set/aLD=30+ú%-%DG%))))

if%LM%LSS10setLM=0%LM:

~-1%

if%LD%LSS10setLD=0%LD:

~-1%

setstrLstDt=%LY%%LM%%LD%

CALL%KETTLE_PATH%\Kitchen.bat

-file=%JOB_PATH%\etl_day_schedule.kjb-param:

YESTERDAY=%strLstDt%

脚本名称:

Etl_Sch_rt

@echooff

setkettle_path=C:

\Kettle4.2

setJOB_PATH=C:

\kettle_rep

CALL%KETTLE_PATH%\Kitchen.bat-file=%JOB_PATH%\etl_real_schedule.kjb

-param:

YESTERDAY=úte:

~0,4%úte:

~5,2%úte:

~8,2%

脚本名称:

Etl_Sch_all

@echooff

setkettle_path=C:

\Kettle4.2

setJOB_PATH=C:

\kettle_rep

CALL%KETTLE_PATH%\Kitchen.bat-file=%JOB_PATH%\etl_all_schedule.kjb

6.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方式抽取数据。

实时数据的抽取的定时任务也是类似这样的步骤,不同点在于实时数据的抽取是间歇性的,一般是每隔多少分钟跑一次数据,而不是定时在每天一个时间点跑数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1