数据飘移问题

说明

同一个业务日期数据中包含前一天或后一天凌晨附近的数据,或者丢失当天的变更数据。
举例说明: dt表示时间,如2022年7月17日 ,
举例一:在2022年7月17日59分的时候,一个业务出现了,这是如果业务量特别大的时候,他在2022年7月18日才存储到数据库中,这时候呢?本应存储在17日的数据存储在了18日,这就是数据漂移。
举例二: 淘宝我在2022年7月17日58分的时候下了个订单买了个手表,7月18日我完成了付款,这样对帐算钱,以一天为单位的时候,就会有有问题,这个也是数据漂移。

解决方法

1 用多个时间进行统计。
举例,一个时间是事件时间,另一个时间是自然时间。连续统计两个自然日的同一个事件时间。
2 让每一天的数据量大点,以事件时间为切分。
这样的缺点是,比如说,17日买了手表,18日早上凌晨退款,这样这两条数据会到同一天,下游在统计支付订单状态会有问题。

实战

淘宝双十一,这个我理解的可能不对,我按照我的理解简单描述下,

首先认识3个时间
入数据库时间,事件时间,日志时间。

在双十一晚上11点59分到时候,大量的客户会下单,然后呢,由于要调用支付宝的接口,这些数据存储到数据库的时候已经是第二天了,这不就数据漂移了?

正常的思路 用解决方法中的第一种,读两天数据,然后用事件时间判断是不是双十一那天的,但注意不只是一个时间发生了数据迁移,他的支付时间,订单时间,成功,等等,都会产生漂移,而且他的状态是更新了多次,如本来订单是17日,然后18日订单状态发生了改变,然后直接where 订单日期=17日 order by 入库时间 limit 1,最后拿这个和日志时间17日 18日前后15分钟的数据进行全外连接解决。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值