FCRP-D---帆软官网模拟题,kettle模块

1

全量更新:

准备数据:在MySQL中创建两个数据库——kettle,kettle_test,kettle中tableA源表,kettle_test中tableB目标表

表输入:

按num升序排序:

插入更新:

效果:kettle转换执行成功,将源表的数据全部插入到目标表中。

增量更新:前两步配置,表输入和排序和全量更新一样

两个表的输入配置:来自不同的数据库

合并排序:选择左外链接

过滤记录条件:false什么也不做,true就下一步---复制记录到结果

再经过一次排序之后,选择插入/更新控件,插入到目标表:

在源表中增加一条数据,目标表不变

效果:

将执行日志输出并保存到数据库中:

空白处右键点击:

设置完成之后,运行一次转换就能看到日志表中的有数据

效果:

从日志表中抽取数据到elt_log

在转换中设置一个延迟,方便观察,运行几次生成数据

观察日志表,enddate转换开始的时间,logdate是转换结束的时间

准备sql语句,预览数据时发现bug:执行时长,没有按照规定的格式显示

SELECT transname as 转换名称,
date_format(enddate,'%Y-%m-%d') as 执行日期,
timediff(logdate,enddate) as 执行时长
FROM log
where logdate=(select max(logdate) from log group by date_format(enddate,'%Y-%m-%d'))
group by date_format(enddate,'%Y-%m-%d');

navicat截图正确格式:

添加控件,字段选择,将执行日期转化成正  确的格式

etl_log表输出

效果,19秒为最新的一次转化执行时间:

新增两个字段记录转换前后的行数---未完成写思路

在ktr异常时将本次执行日志发送到指定邮箱:

新建作业:

添加转换:

配置邮箱:

效果:

2


建表

在转换中执行sql脚本,判断当前时间不在3:00~12:00之间

update erp set 抽取时间='2022-07-18'
where date_format(批处理时间,'%H') not between 3 and 12
and DATE_FORMAT(批处理时间,'%Y-%m-%d')=DATE_FORMAT(now(),'%Y-%m-%d')
;

效果:

3

新建转换:

获取变量:

表输入配置:

新建作业:

设置两个变量:

判断年份是否在范围内:

执行JS脚本,实现年月累加:

var year=new Number(parent_job.getVariable("year"));
var month=new Number(parent_job.getVariable("month"));
 	
if(month>12){
parent_job.setVariable("month",1);
parent_job.setVariable("year",year+1);
true;
}else {
parent_job.setVariable("month",month+1);
true;
}

定时调度,每月1号执行一次作业。未实现:每月1号跑上个月的数据

选中start,右键,选择编辑作业入口

效果:日期标志位,不知道是意思,不管它了

  • 9
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值