一、目的
由于一些雷达死了但是又需要有数据进行展示,于是就把这些雷达的历史数据,修改日期为当前日期后,同步到MySQL另一张表中,并且每日每台雷达的数据逐渐减少,等同于人为创建数据问题
二、实施步骤
(一)获取系统信息
(二)字段选择1
(三)字段选择2
(四)mysql表输入
这是最关键最困难的一步!!!
1、完成历史数据的时间替换成系统日期
2、设置每台雷达的限制数据量,并且逐日减少
with t2 as(
with t1 as(
select
? day,
id,
deviceno,
timestamp,
measno,
laneno,
coilno,
headway,
gap,
speed85,
avspeed,
occupancy,
volume,
volume1,
volume2,
volume3,
volume4,
volume5,
unixtime
from t_statisticsdata202305 as t1
right join t_device_no t2 on t2.device_no=t1.deviceno
)
select
day,
id,
deviceno,
concat(substr(day,1,10),substr(timestamp,11,9)) timestamp,
measno,
laneno,
coilno,
headway,
gap,
speed85,
avspeed,
occupancy,
volume,
volume1,
volume2,
volume3,
volume4,
volume5,
unixtime,
row_number() over (partition by deviceno order by volume2) rk,
(count(id) over (partition by deviceno) -(substr(day,9,2)*6*(count(id) over (partition by deviceno,timestamp)))) limit_num
from t1
where substr(timestamp,6,5)=substr(day,6,5)
)
select
t2.day, id, deviceno, timestamp, measno, laneno, coilno, headway, gap, speed85, avspeed, occupancy, volume, volume1, volume2, volume3, volume4, volume5, unixtime
from t2
where rk <= limit_num
(五)字段选择3
由于MySQL表中的id字段为主键自增id,而且表中还有其他雷达的数据,因此不需要原始数据的id字段,让目标表自动生成id数据,避免出现因id字段重复而插入失败
(六)插入 / 更新
注意:勾选不执行任何更新
(七)执行kettle任务,并多次执行验证数据是否重复
就这样,终于实现了需求!