4、千亿级数仓项目(二)拉链表--增量数据

提示: 由于整个项目实现拉链表耗时太长所以只实现了一个拉链表,学会怎样使用就行
5、数仓项目 - 商品维度数据装载
在这里插入图片描述
使用拉链表解决商品SCD问题

拉链表解决了:缓慢变化维
拉链表的目的:既能保证数据没有冗余,也能保证有历史数据

拉链表的流程图

全量导入:
首先从mysql导入数据到hive的ods层
使用kettle导入所有历史数据到hive的ods层()
将ods层历史数据导入到hive的dw层

增量导入:
把增量数据添加到mysql表里
使用kettle导入所有增量数据到hive的ods层(通过分区)
dw层的表和ods层表进行左外连接查找出,更新的数据和新增数据一起添加到dw层的表里

在这里插入图片描述
拉链表细节

1、dw_start_date是一条数据插入的开始时间dw_end_date是这条数据结束时间,表示一条数据的生命周期,
在生命周期期间有效,超过时间无效

2、modifytime表示数据变化的时间,dw_start_date表示数据状态开始的时间,
==》虽然这两个字段数据相同但是表达的意思不同

3、dw_end_date默认为9999-12-31,当这条数据修改之后,这条数据的dw_end_date字段就会更新成修改的时间,
同时会把新修改的数据添加到表里,原来的数据就无效了

注意生命周期范围:dw_start_date>=,<dw_end_date(不包括结束时间)

5.1在hive的dw层建表(使用spark操作效率更高)

在这里插入图片描述

-- dw层建表
DROP TABLE IF EXISTS `itcast_dw`.`dim_goods`;
CREATE TABLE `itcast_dw`.`dim_goods`(
goodsId bigint,
goodsSn string,
productNo string,
goodsName string,
goodsImg string,
shopId bigint,
goodsType bigint,
marketPrice double,
shopPrice double,
warnStock bigint,
goodsStock bigint,
goodsUnit string,
goodsTips string,
isSale bigint,
isBest bigint,
isHot bigint,
isNew bigint,
isRecom bigint,
goodsCatIdPath string,
goodsCatId bigint,
shopCatId1 bigint,
shopCatId2 bigint,
brandId bigint,
goodsDesc string,
goodsStatus bigint,
saleNum bigint,
saleTime string,
visitNum bigint,
appraiseNum bigint,
isSpec bigint,
gallery string,
goodsSeoKeywords string,
illegalRemarks string,
dataFlag bigint,
createTime string,
isFreeShipping bigint,
goodsSerachKeywords string,
modifyTime string,
dw_start_date string,
dw_end_date string
)
STORED AS PARQUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值