数仓-维度模型之维度迟到问题处理详解
摘要:在数据仓库项目中,从贴源层(ODS)更新到数据仓库层(DW)时,出现了拉链形式的维表数据更新不及时的情况,从而导致事实表中的该维度列值为空或旧值。需要根据维表数据更新的时间,将事实表中数据纠正。
关键词:数据仓库 离线数仓 维度迟到 退链 ODS DW 拉链表 缓慢变化 SCD2
问题示例
问题背景:数据源中有商品表、用户表和订单表,业务流程为从数据源加载数据到ODS层,之后在DW层进行维度建模,分为商品维度表(缓慢变化),用户维度表(缓慢变化),订单事实表(事务、增量)。
问题:业务上,商品苹果单价在2021-03-25由5更改为10,但是数据源中的商品表更新日期为2021-04-05,滞后于业务,检查发现之后,将数据源中的最近更新日期纠正为2021-03-25。在常规的数仓更新操作中,无法处理该错误,因此需要对数仓中的数据进行修正。
===========================================================================================
修正前表数据:
ODS层
商品表
商品id | 商品名称 | 商品单价 | 最近更新日期 |
---|---|---|---|
1 | 苹果 | 10 | 2021-04-05 |
2 | 香蕉 | 2 | 2021-03-04 |
3 | 葡萄 | 15 | 2021-03-04 |
用户表
用户id | 用户名称 | 用户手机号 | 最近更新日期 |
---|---|---|---|
1 | 张三 | 123 | 2021-01-04 |
2 | 李四 | 234 | 2021-01-04 |
3 | 梅有钱 | 345 | 2021-01-04 |
4 | 刘首富 | 456 | 2021-01-04 |
订单表</