背景:前日在出数据需求文档时,错将不可上卷汇总的需求提成了最细粒度化的需求,导致数据无法上卷,因此无法展现的事情,现将此情况进行review,以帮助自己的成长。
review:有些数据是无法用最细粒度的数据上卷得到的,比如除数数据:可发周转天数(可发库存/日销),对于小仓来说就是sum(小仓的可发天数)/sum(小仓的日销),对于项目组来说就是sum(项目组的可发天数)/sum(项目组的可发天数),其中项目组可由小仓进行汇总,但是除数之间分开是不可相加的,之前出的取数逻辑是最小化到最细粒度,因此上卷数据会有问题。
反思结果:业务出数时给出各种维度的组合场景及所有指标
mysql和kylin需求设计时都保持此法,取数逻辑也不可公用
2.具体需求
日期统一为“yyyy-MM-dd”数据
2.1 总数据
说明:所有大仓汇总后的总数据
场景一:
- 维度:
- 日期
- 指标:
- 可发库存
- 可发库存金额
- 在途库存数量
- 在途库存金额
- 总库存数量(可发+在途)
- 总库存金额(可发+在途)
- 滞销库存数量
- 滞销金额
场景二:
- 维度:
- 日期
- SKU(spec_no、spec_name)
- 指标
- 可发库存
- 可发库存金额
- 在途库存数量
- 在途库存金额
- 总库存数量(可发+在途)
- 总库存金额(可发+在途)
- 滞销库存数量
- 滞销金额
2.2 大仓数据
场景一:
- 维度:
- 日期
- 大仓(大仓id、大仓name)
场景二:
- 维度:
- 日期
- SKU(spec_no、spec_name)
- 大仓(大仓id、大仓name)
2.3项目组数据
场景一:
- 维度:
- 日期
- 项目组
- 指标
- 可发库存
- 可发库存金额
- 在途库存
- 在途库存金额
- 库存数量(可发+在途)
- 库存金额(可发+在途)
场景二:
- 维度:
- 日期
- SKU(spec_no、spec_name)
- 项目组
- 指标
- 可发库存
- 可发库存金额
- 在途库存
- 在途库存金额
- 库存数量(可发+在途)
- 库存金额(可发+在途)
- 可发周转天数(可发库存/日销)
- 周转天数((可发+在途库存)/日销)
- 日销(7天销量/7*0.6+14天销量/14*0.4)
- 7日销量
- 14日销量
- 库存预警(是否滞销品)
- 若可发周转天数>90——滞销品
- 若可发周转天数>45&若可发周转天数<=90——高库存
- 若可发周转天数<=45&可发周转天数>14——正常库存
- 若可发周转天数<=14——低库存
- 预警等级
- 若(可发周转天数<=3) | (可发周转天数>90)——Ⅰ级
- 若(可发周转天数<=7&可发周转天数>3) | 可发周转天数>60&可发周转天数<=90——Ⅱ级
- 若(可发周转天数<=14&可发周转天数>7) | (可发周转天数>45&可发周转天数<=60) ——Ⅲ级
- 高库存解决方案 总过滤条件:若滞销品&Ⅰ级
- 若滞销品&Ⅰ级&可发库存<=1000——蓝色预警,组内自行处理高库存
- 若滞销品&Ⅰ级&可发库存<=50000&可发库存>1000——黄色预警,综合运维部跟进项目组处理高库存
- 若滞销品&Ⅰ级&可发库存<=100000&可发库存>50000——橙色预警,项目组提报处理计划,综合运维部监控处理
- 若滞销品&Ⅰ级&可发库存>100000——红色预警,项目组提报处理计划,综合运维部重点监控处理进度
- 低库存解决方案 总过滤条件:低库存&Ⅰ级,大仓的可发周转天数是指:总数据场景二种的可发数量——即该sku所有的可发库存数量/sum(该产品的日销)
- 大仓可发周转天数>120——全仓货品充裕,关注调拨
- (大仓可发周转天数<120&大仓可发周转天数>45)&项目组在途库存>0——全仓货品充足,关注调拨;本组有在途,关注催到货
- (大仓可发周转天数<120&大仓可发周转天数>45)&项目组在途库存<=0——全仓货品充足,关注调拨;本组无在途,关注补订单
- (大仓可发周转天数<45&大仓可发周转天数>14)&项目组在途库存>0——全仓货品不足,关注调拨;本组有在途,关注催到货
- (大仓可发周转天数<45&大仓可发周转天数>14)&项目组在途库存<=0——全仓货品不足,关注调拨;本组无在途,关注补订单"
- 大仓可发周转天数<14&项目组在途库存>0——全仓货品短缺,不可调拨;本组有在途,紧急催到货
- 大仓可发周转天数<14&项目组在途库存<=0——全仓货品短缺,不可调拨;本组无在途,紧急补订单
3.数据结构设计
数据中有可上卷数据,有不可上卷数据,有两种数据结构设计模式:
第一种:将所有可上卷数据进行最细粒度的设计,其他单拎出来。
第二种:单独每个环节出一个数据(数据复用性不好,代码重复)。
综合来看使用第一种数据结构设计方式:
将公共的字段(可累加的数据)细粒化
- 维度
- 日期
- SKU(spec_no、spec_name)
- 大仓(大仓id、大仓name)
- 项目组
- 指标
- 可发库存
- 可发库存金额
- 在途库存
- 在途库存金额
- 库存数量(可发+在途)
- 库存金额(可发+在途)
下面两个指标在出数的时候动态汇总(前端汇总)
- 可发周转天数(可发库存/日销)
- 周转天数((可发+在途库存)/日销)
不可累加的分开设计:
- 维度:
- 日期
- SKU(spec_no、spec_name)
- 项目组
- 指标
- 可发库存
- 可发库存金额
- 在途库存
- 在途库存金额
- 库存数量(可发+在途)
- 库存金额(可发+在途)
- 可发周转天数(可发库存/日销)
- 周转天数((可发+在途库存)/日销)
- 日销(7天销量/7*0.6+14天销量/14*0.4)
- 7日销量
- 14日销量
- 库存预警(是否滞销品)——使用1、2、3、4进行状态代替即可
- 若可发周转天数>90——滞销品
- 若可发周转天数>45&若可发周转天数<=90——高库存
- 若可发周转天数<=45&可发周转天数>14——正常库存
- 若可发周转天数<=14——低库存
- 预警等级——使用1、2、3、4进行状态代替即可
- 若(可发周转天数<=3) | (可发周转天数>90)——Ⅰ级
- 若(可发周转天数<=7&可发周转天数>3) | 可发周转天数>60&可发周转天数<=90——Ⅱ级
- 若(可发周转天数<=14&可发周转天数>7) | (可发周转天数>45&可发周转天数<=60) ——Ⅲ级
- 高库存解决方案——使用1、2、3、4进行状态代替即可,总过滤条件:若滞销品&Ⅰ级
- 若滞销品&Ⅰ级&可发库存<=1000——蓝色预警,组内自行处理高库存
- 若滞销品&Ⅰ级&可发库存<=50000&可发库存>1000——黄色预警,综合运维部跟进项目组处理高库存
- 若滞销品&Ⅰ级&可发库存<=100000&可发库存>50000——橙色预警,项目组提报处理计划,综合运维部监控处理
- 若滞销品&Ⅰ级&可发库存>100000——红色预警,项目组提报处理计划,综合运维部重点监控处理进度
- 低库存解决方案——使用1、2、3、4进行状态代替即可,总过滤条件:低库存&Ⅰ级,总可发周转天数是指:即该sku所有的可发库存数量/sum(该产品的日销)
- 总可发周转天数>120——全仓货品充裕,关注调拨
- (总可发周转天数<120&大仓可发周转天数>45)&项目组在途库存>0——全仓货品充足,关注调拨;本组有在途,关注催到货
- (总可发周转天数<120&大仓可发周转天数>45)&项目组在途库存<=0——全仓货品充足,关注调拨;本组无在途,关注补订单
- (总可发周转天数<45&大仓可发周转天数>14)&项目组在途库存>0——全仓货品不足,关注调拨;本组有在途,关注催到货
- (总可发周转天数<45&大仓可发周转天数>14)&项目组在途库存<=0——全仓货品不足,关注调拨;本组无在途,关注补订单"
- 总可发周转天数<14&项目组在途库存>0——全仓货品短缺,不可调拨;本组有在途,紧急催到货
- 总可发周转天数<14&项目组在途库存<=0——全仓货品短缺,不可调拨;本组无在途,紧急补订单