ETL搭建:实操解决区域补货混淆业务痛点

在刚刚踏足零售业的第一个工作需求,解决目前补货遇到的痛点。
诉求:因人工无法在相应时间内剔除有问题的数据,所以借助于大数据平台。
小白练手项目:耗时1周了解业务逻辑与现有数据源,再耗时2周同步目前缺失的数据至hive平台,耗时1周写逻辑&出结果解决痛点;
论一个小白如何一步步搭建零售数据库。

  1. 同步daily库存表【原先仅weekly,联系大数据IT同步至Hive】
  2. 构建区域销售表 【零售单 匹配 店铺信息】

需求:解决区域补货收到非本区域买货的款的问题

  • 前提条件:区域补货是区域上周有过销售才会补出
  • 提问业务:为什么区域买货无订单但是会有销售?
    • 可以从APP下单
    • 首次分货下到店分错

零售单:sold_rpt

skustoresoldqty
s1sto11
s1sto21
s1sto31

店铺信息:store_info

areastore
eaststo1
northsto2
southsto3
weststo4
frsto5

构建区域销售表

CREATE  TABLE sold_tb as
select sku,area,sum(soldqty) as soldqty
from sold_rpt a
left join store_info b 
on a.store=b.store
group by sku,area
;

理想解决方案: 区域销售表 匹配 区域订单表 =>剔除无区域买货记录的数据

区域销售表:sold_tb

skuareasoldqty
s1east1
s1north1
s1south1

区域买货表:order_tb

skuareaorder
s1east10
s1north10

剔除无区域买货记录的数据:

select sku,area,soldqty
from sold_tb a
left join order_tb b on a.sku=b.sku and a.area=b.area 
where b.order is not null
;

限制条件:区域订单表-无【暂时未能从业务那拿到这份订单信息,文件/数据源也未全部熟悉】
=>暂不考虑 首次分货分错的问题

现实解决方案:若区域某sku上周有销售但前3个月无库存记录,则剔除;

库存表:soh_tb

skuareasohdaily
s1east102024-01-01
s1north102024-01-01
with ct1 as (--前3个月的库存记录
select sku,area,max(soh) from soh_tb
where daily>='2024-01-01'
group by sku,area)
--剔除无库存记录的数据--因库存数据量过大,所以暂定前3个月的库存
select sku,area,soldqty
from sold_tb a
left join ct1 b on a.sku=b.sku and a.area=b.area 
where b.soh is not null
;

结果表:用于补货匹配的区域销售表

skuareasoldqty
s1east1
s1north1

第一个练手项目完成(耗时1月),进入正式解决零售补货难题的大项目(耗时半年,不断完善耗时1年,直至新系统上线被替换);
有空会不断更新ETL搭建的逻辑及难易点;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斑点鱼 SpotFish

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值