order 订单表 字段 id order_no(订单编号) business_id(商户 ID) user_id (会员 ID ) money(消费金额) user 会员表 id name 会员名称 business 商户表 id name 商户名称
基数:200 个商户 一个商户可能有 200 个顾客 前提:会员购买过一次,第二次购买就算复购 问题:有什么好的设计方案和想法
目前我所想到的方法: 新建一张表,存商户和会员的关系
http://p29q5vjby.bkt.clouddn.com/%E5%9B%BE%E7%89%87.png
每天用户在某个商户购买商品时查询一下关系表( re_business_user )数据是否存在(where 条件中加上 date 等于当前的时间 2018-05-11),不存在新增一天记录,存在则更新购买次数+1 和购买金额增加 这样设计我就可以很快的计算出 7 天复购率,15 天复购率,30 天复购率
这样设计会造成整张表数据量过大,一个月大概会有 120W 数据(20020030)
各位大佬有什么好的想法可以解决这个问题吗?谢谢
1
wayne1027 2018-05-25 19:02:28 +08:00
没有 BI 团队吗?复购率实时性要求不高的话可以做成 T+1 离线数。用 hive&spark 每天跑一下 order 表汇总到 dw 层即可。有实时性要求可以在上述条件下再加上当天的,用 redis 解决。
|
2
zacksleo 2018-05-25 19:21:09 +08:00 via iPhone
定时任务做统计
|
3
whileFalse 2018-05-25 22:07:50 +08:00
提问:为什么要用专门的字段存单独一天的购买次数?
还有,楼主担心每个月会刷出 120w 数据实在是想多了。买东西不要钱的吗?你就 4w 个用户,能每个人天天买? 醒醒吧,要真是那么多人天天买,你们老板早就发大财然后把你开掉换个有经验的了。 |
4
turan12 2018-05-25 22:34:32 +08:00
直接统计购买次数不就行了?只要购买次数>1 就算复购。
|