数据漂移

概念

数据漂移是 ODS 数据的一个顽疾,通常是指 ODS 表的同一个业务日期数据中包含前一天凌晨附近的数据或者丢失当天的变更数据。

案例

落地到ODS的数据需要按日切分,但是有很多时间戳字段,以哪个为准好呢?
通常,时间戳字段分为四类:

数据库表中用来标识数据记录更新时间的时间戳字段(假设这类字段叫 modified time )。
数据库日志中用来标识数据记录更新时间的时间戳字段·(假设这类宇段叫 log_time)。
数据库表中用来记录具体业务过程发生时间的时间戳字段 (假设这类字段叫 proc_time)。
标识数据记录被抽取到时间的时间戳字段(假设这类字段extract time)。

这几个时间理论上应该一样,但是由于如下等原因,会出现差距

由于数据抽取是需要时间的, extract_time 往往会晚于前三个时间。
前台业务系统手工订正数据时未更新 modified_time
由于网络或者系统压力问题, log_time 或者 modified_time 会晚proc_time。

解决方式

多获取后天的数据

最常用的处理方法是在ODS表每个时间分区中向前、后多冗余一些数据,保障数据只多不少,具体应用的时候可以让下游的表根据自身业务需要用不同的proc_time去做筛选处理。

当然这种方式对累积快照事实表是有一些统计风险的,例如一个订单是当天支付的,但是第二天凌晨申请退款关闭了,那么当这个订单离线同步到ODS时,记录该订单的记录只会保留最终的订单状态。那么统计当天订单数量时会出现错误。

参考

对数据漂移的一些小思考_真新镇的涅法雷姆-CSDN博客_数据漂移

对数据漂移处理的一点理解_优优我心的博客-CSDN博客_数据库漂移是什么意思

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值