跳到主要内容
版本:6.6.0

连续性问题最佳实践

需求场景

所谓连续性问题,即:

1)齐码(色)率(鞋服):在某款商品的颜色中,如果超过4个连续尺码都有库存,则为齐码

2)连续下单(购买)月份数(会员相关)······

日常制作报表中,经常遇到相关的连续性问题,一下方案供大家参考:

解决思路

  1. 按一定顺序排列好数据(如:按尺码大小,颜色、时间等等)

  2. 对判定的内容打上标签(如:是否有库存,是1,否0)

  3. row_number()记录,每个值的位置;

  4. 按标签分组,使用collect_list()函数,把0或者1的row_number()信息进行记录;

  5. 选取标签为1的数组,利用连续值的特性(max-min+1=数组内值个数),计算相关内容

案例实现

以下某款商品的Red颜色的齐码率作为例子。

  1. 按尺码大小,排列好数据相关库存数据;

image.png

  1. 按是否有库存打上标签,有库存为:1,无库存为:0;

    image.png

  2. 用row_number()记录所有值的行号;

image.png

  1. 按是否有库存标签分组,使用collect_list()函数,把0或者1的位置信息进行记录;

image.png

  1. 选取标签为1的数组,利用连续值的特性(max-min+1=数组内值个数),计算相关内容,计算有库存的尺码连续数;

  2. 最终效果:标签为“1”的数组中,最大值:5,最小值2,数组内值个数为:4。则:
    最大值 - 最小值+1 = 数组内值个数;即:5-2+1=4。故该款商品,RED颜色的尺码是齐的。