做历史累计表时容易忽略的小坑(会导致数据量膨胀)

      分享一个做数仓ETL表时遇到的小坑,哈哈,应该只适合数仓小白白看。。。。

     所谓历史累计表,就是要记录下从数据产生到当前这一时段的累计,比如,某一天,日志进来一条数据,是一个用户访问了某个页面,这其中加入有如下信息:用户,访问页面名称,进入页面时间,退出页面时间。此时我们可以计算出该用户在这一天访问该页面的时长。一般情况下每天的日志是以增量形式入库,对于报表或者其他需求而言,我们可能需要统计某个用户在某段时间总的访问时长,这时候我们就得做一个关于用户访问页面的历史累计表。将该表定时每天执行,需要用到这个表的人只要每次取最新的分区就可以了。

       好啦,历史累计表就普及到这儿,进入正题。做历史累计表的时候,需要用新的数据去full outer join 前一个分区的数据来得到新一个分区的数据。解释一下:一般日志入库时间都是当天时间-1(也就是昨天),所以新数据就是昨天的数据,前一个分区的数据就是指前天以及前天以前的数据累计(前天以前:是从数据产生开始到前天)。问题:full outer join的时候在on时,一定要连接新表与历史表中能确定一条数据的所有字段,注意,是所有字段,第一次做历史表时,只关注主键去了,忽略了这个问题,导致数据量膨胀,找了好久原因。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值