背景目前已有表1门店综合(门店信息表)、表2销售综合(销售明细表) 表1表2是目前已有的信息, 想要实现问题部分的功能:哪些门店在某天对于某款产品未产生任何消费 某一个思路:现在有一个方法处理这个, 就是用笛卡尔内积去进行处理(cross join);处理的方法是 把 所有的门店 X 所有的日期 X 所有的产品 生成一张"超级全量表格A", 然后再把事实表(销售数据)拼接(left join)到A表上 , 拼接不上的空值代表了该款产品在某一天未产生任何销售 但这个方法计算量太大了, N1款产品 X N2个日期 X N3家门店 , 有什么别的好方法可以处理吗?那么本文就通过简单的三步实现这样的效果! 实现步骤1.先根据日期、商品分组,把有销售记录的门店通过collect_set函数汇总为一个数组 2.接着把全部门店汇总为数组 3.通过array_except函数,返回存在于array1,但不存在于array2里的元素列表 从而得出,没有销售该商品的门店 本文所使用函数,请参考数组使用文档:https://docs.guandata.com/article/1/428146795235770368.html#nav-7-H2 |