业务域订单表的拉链表开发

需求

业务中的订单表不可避免地,每一日都是有增量的,而且旧的订单状态也可能被更新。于是我们找到了拉链表这个媒介来来保存订单的历史,更新、添加增量,既节省了空间,又可以很直观地过滤出每一天的数据状态(历史)。

建表&模型设计

订单拉链表

create table dwd.mall_order_zip(
    id               bigint      
    ,amt             decimal(10,2)     
    ,status          int     
    ,user_id         bigint     
    ,create_time     string     
    ,modify_time     string   
    ,start_dt        string    
    ,end_dt        string    
)
partitioned by (dt string)
stored as orc
tblproperties('orc.compress'='snappy')
;

数据来源和逻辑

使用区别于之前的拉链表更新逻辑,当然也可以用以前的更新逻辑

数据来源是拉链表T-1日分区和订单业务表T日的增量数据,订单业务表T日的增量数据挂上T日作为start_dt,9999-12-31作为end_dt后 union all 拉链表T-1日分区。再依据条件更改开始和结束时间

以id划窗口并且倒序排列,并用row number标号,标号为2的且end_dt为9999-12-31的,需要把end_dt更新为T日。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值