连续性问题最佳实践
需求场景
所谓连续性问题,即:
1)齐码(色)率(鞋服):在某款商品的颜色中,如果超过4个连续尺码都有库存,则为齐码
2)连续下单(购买)月份数(会员相关)······
日常制作报表中,经常遇到相关的连续性问题,一下方案供大家参考:
解决思路
-
按一定顺序排列好数据(如:按尺码大小,颜色、时间等等)
-
对判定的内容打上标签(如:是否有库存,是1,否0)
-
用row_number()记录,每个值的位置;
-
按标签分组,使用collect_list()函数,把0或者1的row_number()信息进行记录;
-
选取标签为1的数组,利用连续值的特性(max-min+1=数组内值个数),计算相关内容
案例实现
以下某款商品的Red颜色的齐码率作为例子。
- 按尺码大小,排列好数据相关库存数据;
-
按是否有库存打上标签,有库存为:1,无库存为:0;
-
用row_number()记录所有值的行号;
- 按是否有库存标签分组,使用collect_list()函数,把0或者1的位置信息进行记录;
-
选取标签为1的数组,利用连续值的特性(max-min+1=数组内值个数),计算相关内容,计算有库存的尺码连续数;
-
最终效果:标签为“1”的数组中,最大值:5,最小值2,数组内值个数为:4。则:
最大值 - 最小值+1 = 数组内值个数;即:5-2+1=4。故该款商品,RED颜色的尺码是齐的。