日常开发中遇到了一种需要使用两个字段对两张表进行外连接的场景,但是在这种情况下,会产生笛卡尔积,造成数据量疯狂增长,于是本文中使用union all替代这种情况下的join,来解决这个问题。
业务场景
1.文章表中有“纯文字”、“图片”、“长视频”、“短视频”四类,其中,需要修正指标“阅读量”,此指标为新添字段,为了与各种类下的原有阅读量区分,取名“新阅读量”;
2.需要添加的“新阅读量”字段只在“长视频”类别下添加,其余类别下的“新阅读量”字段值记为0。
3.以作者为纬度进行统计,最终结果为此作者在各个类型下的文章情况;
4.一个作者纬度下,此四种文章类型不保证全都有;
5.若一个作者纬度下,在添加新字段前,不存在“长视频”类,则对此作者新添加一个“长视频”类别,其余指标全部置为0,新增的“新阅读量”指标值记为本次新值;
表情况
当前有两张表,一张是原始数据表,另一张是存放“新阅读量”的表,Schema如下:
- 1.原表(author_old)
- author_id //作者唯一编码
- type //文章类型,值包括“纯文字”/“图片”/“长视频”/“短视频”四类
- view_count_old //原阅读量
- like_count //点赞量
- 2.新表(author_new)
- author_id //作者唯一编码
- type //文章类型&#