前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有关用户留存模型的一种设计方法

有关用户留存模型的一种设计方法

作者头像
数据仓库践行者
发布2020-04-18 00:10:57
8820
发布2020-04-18 00:10:57
举报
文章被收录于专栏:数据仓库践行者

没错,我的工种就是属于那种史上被人吐槽为最没技术含量、最打杂的工种——数据仓库开发工程师。

即使这样,我们也没有放弃理想啊,每天都在思考怎么把工作做的更好,即使打杂,也要打的优雅~~

今天分享一个用户留存模型的设计

1、抛出问题

用户留存是用户分析中最常用到的指标之一。

我们常常接到这样的需求:

~我们要看1天、2天、3天、4天 … 7天的留存~

~我们要看1天、2天、3天、4天 … 28天的留存~

还有一些不按套路出牌的:

~我们要看第33天的留存~

~我们要看第56天的留存~

让你在代码里写连着7天的留存,就已经写到手抽筋了,恨不得写个代码生成器来生成代码。

后面再来个连着28天的留存… 本来以为这就是终结了,谁知后面还有33天、49天、56天…

2、设计方案

可以这么来设计

代码语言:javascript
复制
CREATE EXTERNAL TABLE IF NOT EXISTS  GDM_USER_LEFT_INFO_DAY(  uuid  string COMMENT '用户id'  liucun_map map<string,string> COMMENT '用户90天留存情况 map(lc1:1,lc2:1...lc90:1)'  ) COMMENT '日活跃1~90天用户留存信息'  PARTITIONED BY (    day string    )STORED AS ORC

当然了,字段不限于这两个,可以依据实际需求,添加其它属性。

只计算近90天的留存,是因为经过考察,有99%需求,都是计算90天以内的留存。

伪代码如下:

代码语言:javascript
复制
           insert overwrite table gdm_user_left_info_day partition (day)            select                t1.uuid,                str_to_map                (                    concat_ws                    (',',                        collect_set                        (                            concat('lc',cast(datediff(t2.day,t1.day) as string),'@@@','1')                         )                    ),',','@@@'                ) as liucun_map,                t1.day            from            (               select                    day,                    uuid               from active where day>='$day' and day<='$dayago90'             ) t1 left join            (                select                     day,                     uuid                from active  where   day>='$dayago1' and day<='$dayago91'             ) t2 on t1.uuid=t2.uuid            where datediff(t2.day,t1.day)>0

其中,active 为日活跃用户表。这样以来,每天更新近90天的用户留存,不仅解决了跑数的问题,同时,表里已经计算好了1~90天用户的留存情况 。

代码语言:javascript
复制
--要计算2019-08-01日活跃用户的 7日留存用户数,20日留存用户数: select      sum(liucun_map['lc7'])),     sum(liucun_map['lc20']))  from gdm_user_left_info_day where day='2019-08-01'   

哈哈 ,是不是很方便?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据仓库践行者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、抛出问题
  • 2、设计方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档