离线电商数仓(三)
动态分区
通过数据本身的字段信息将普通表数据信息按照分区表的形式存放到不同分区目录下。
- 开启非严格模式
- 插入数据:insert into table dep_partition partition(day) select deptno, dname, loc, day from dept;
- 截取最后一列作为分区目录命令,将数据拆分到不同目录中。
用户维度表
拉链表:带有start_date起始日期, end_date最终日期的表,用来存储过期数据和最新数据。
首日导入:将dt写死为9999-06-08
每日导入:end_date最新更新数据放到9999-06-08分区,start_date开始时间为当天的日期。为了保存end_date数据,可以将最后一列的数据复制,多加一行。
dwd层购物车加购增量表
- 拿到新增及变化,过滤掉删除
- desc 表名,查看字段的具体类型
- 使用map_keys(old)获取map类型字段的所有key,并存放到数组中
- map结构如何获取value值, value = map[key]
- 加购时间建议使用ts的值,之后使用from_utc_timestamp(ts,‘GMT+8’), 转换为东八区时间。
- sku_num的值需要考虑该次行为是插入操作还是修改操作,如果是修改操作sku_num = sku_num - old[‘sku_num’]