KETTLE详细设计Word格式.docx
《KETTLE详细设计Word格式.docx》由会员分享,可在线阅读,更多相关《KETTLE详细设计Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
提示关于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中参数使用方法有两种:
一种是%%变量名%%,一种是${变量名}。
这两种方法变量数据类型都是数字类型。
traget_day
3、在Kettle设计盘中拖入'
'
执行SQL脚本”、“表输入”、“表输出”三个组件
(图4.1)
注:
在SQL中使用变量时需要把“是否替换变量”勾选上,否则无法使变量生效。
这里需要注意的是后面的限定where条件,因为源表的时间字段是时间类型,我们的参数是数字类型,所以需要根据源表时间字段的不同注意转换。
4.2)(图
这里与全量抽取的表输出差不多。
4.3(图)
就必须如果需要重新插入输入参数日期的数据,这里要考虑到数据出错重跑的问题,说明:
要先删除输入参数日期的数据,不然会报错。
因为我参数在条件里面,变量替换要打上沟,不然设置的变量会失效。
5Kettle实时数据抽取
乌江水电项目实时数据的表有
hd.target_real
rtdb
RTEMS
rtcalc
RTSQ
REAL
hourdb
REAL这张表实时抽取与增量抽取基本上相差不大,只是对时间戳的处理方式不同,以为例,详细描述实时抽取过程的步骤。
)(图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=ú
~5,2%
setDA=ú
~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=ú
%GTR%DG%(set/aLD=ú
%-%DG%)else(
if%MO%==1(set/aLY=%YE%-1)&
(set/aLM=12)&
(set/aLD=31+ú
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+ú
for%%bin(571012)do(if%MO%==%%b(set/aLD=30+ú
%-%DG%))))
if%LM%LSS10setLM=0%LM:
~-1%
if%LD%LSS10setLD=0%LD:
setstrLstDt=%LY%%LM%%LD%
CALL%KETTLE_PATH%\Kitchen.bat
-file=%JOB_PATH%\etl_day_schedule.kjb-param:
YESTERDAY=%strLstDt%
脚本名称:
Etl_Sch_rt
setkettle_path=C:
\Kettle4.2
CALL%KETTLE_PATH%\Kitchen.bat-file=%JOB_PATH%\etl_real_schedule.kjb
-param:
YESTERDAY=ú
~0,4%ú
~5,2%ú
Etl_Sch_all
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方式抽取数据。
实时数据的抽取的定时任务也是类似这样的步骤,不同点在于实时数据的抽取是间歇性的,一般是每隔多少分钟跑一次数据,而不是定时在每天一个时间点跑数。