一、目的
由于一些雷达死了但是又需要有数据进行展示,于是就把这些雷达的历史数据,修改日期为当前日期后,增量同步到ClickHouse中,
二、难点
1、获取当前日期,并且修改历史数据的create_time字段的日期部分
2、如果采用增量表输出的话,还需要获取ClickHouse表中的最新时间,这样有2个变量参数
三、插入更新方法
(一)获取系统信息
(二)字段选择1
(三)字段选择2
(四)mysql表输入
(五)字段选择3
(六)clickhouse插入 / 更新
由于这次需求不存在更新,因此只使用插入功能
(七)执行情况
如果表中数据没有,执行成功后插入
如果表中有数据,执行成功后输出为0。不会重复导入
四、增量表输出方法
(一)链条1为插入更新的前面一部分
(二)newtime
select(
select
formatDateTime(create_time,'%Y/%m/%d')
from hurys_dc.b_statistics
order by formatDateTime(create_time,'%Y/%m/%d') desc limit 1) as new_day
备注:这个有点问题,如果目标表有这一天其他雷达的数据,就不能获取目标雷达的最新日期,除非在ClickHouse中建立雷达编号表,然后left join后指定目标雷达的最新日期。
而且,除非某一天增加雷达的话,这这种方式只能获取这台雷达第2 天的数据,除非增加雷达这一天kettle任务还没运行,所以还是用插入更新
由于每天执行1次任务,因此需要获取表中时间戳字段的最新日期new_day,与系统日期对比
(三)替换NULL值
(四)字段选择4
(五)记录关联 (笛卡尔输出)
当系统日期day字段>表中最新日期new_day字段后,MySQL中的数据则通过
(六)表输出
(七)执行情况
如果表中数据没有,那么能执行成功,数据导入
如果表中有该数据,也能执行成功,只是没有数据导入,这样避免重复数据
(八)重复验证
多次执行任务后,查验表中数据是否重复导入
这样两种方法都能搞定,只不过增量表输出效率比较好一点