目录

1.前言

2、用到的函数

3、指标理解

4、创建表和导入数据

4.1目标表

4.2 数据来源表

4.2.1 用户登录历史表​编辑

4.2.2 用户注册表

5、sql解析

5.1一般思路做法

5.2 减少部分重复计算 方法

5.3 实际开发的做法(思路和上面差不多,不过更灵活)

1.前言

计算原则:一般看到什么什么率啥的,指标率=a/b,都要明确分子,分母代表的含义,然后在相除 。

新增留存率具体是指留存用户数与新增用户数的比值。

2、用到的函数

1.datediff(time1,time2):日期比较函数,time1-time2,返回一直int(整数)select datediff('2020-06-14 11','2020-06-10');返回结果:  42.if(表达式,a,b):当表达式条件为真,返回a,否则返回b的值select if(1=2,100,200);  -->200select if(1=1,100,200);  -->100if(time='2020-06-14',1,0): 表达式为真,返回1,否则返回0;3.  cast():类型转换函数select cast(1.0001 as int)  -->1cast(id as string)    -->将id字段的类型改成 string类型

3、指标理解

留存率理解:2020-06-14新增100个用户,

1日之后(2020-06-15)这100人中有80个人活跃了,

那2020-06-14的1日留存数则为80,2020-06-14的1日留存率则为80%(80/100)。

4、创建表和导入数据

4.1目标表

1.建表(目标表)
DROP TABLE IF EXISTS ads_user_retention;
CREATE EXTERNAL TABLE ads_user_retention
(`dt`              STRING COMMENT '统计日期',`create_date`     STRING COMMENT '用户新增日期',`retention_day`   INT COMMENT '截至当前日期留存天数',`retention_count` BIGINT COMMENT '留存用户数量',`new_user_count`  BIGINT COMMENT '新增用户数量',`retention_rate`  DECIMAL(16, 2) COMMENT '留存率'
) COMMENT '用户留存率'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LOCATION '/warehouse/gmall/ads/ads_user_retention/';

4.2 数据来源表

数据来源表:见另一篇博客

留存率数据来源_别这么骄傲的博客-CSDN博客

4.2.1 用户登录历史表

dws_user_user_login_td:是用户域用户粒度登录历史至今汇总表,

如图所示:以为是历史累计表,当我们拿14号分区数据时,最后登录时间为10号 的用户数据也包括在里面。

4.2.2 用户注册表

dwd_user_login_inc:用户域用户注册事务事实表,

5、sql解析

5.1一般思路做法

下面SQL中 求06-14留存的用户数的图解

2020-06-13日 的 1 日留存率:在13号新增的用户,而且在14号活跃(有登录)的用户
留存率= 当天的留存用户数/昨天新增用户数
步骤:
(1)求06-13新增用户的数据 a
(2)求06-14留存的用户数  b
(3)做差 b/a1.求06-13新增用户的数据
select user_id
from dwd_user_register_inc
where dt='2020-06-13'2.求06-14留存的用户数
select count(*)
from
(select user_id from dwd_user_register_incwhere dt='2020-06-13'
)t1
join
(select user_idfrom dws_user_user_login_tdwhere dt='2020-06-14' and login_date_last='2020-06-14'--拿到当天的分区,而且用户最后登录时间是 06-14号的数据
)t1
on t1.user_id=t2.user_id
--两个表连接,拿到既是昨天新增,又是有今天登录的用户数据3. select '2020-06-13' ,1 ,-- 06-13号的1日留存率,b.cnt ,  --留存用户数,a.cnt ,  -- 新增用户数cast(b.cnt/a.cnt as decimal(16,2)) --留存率
from
(select count(user_id) as cnt1from dwd_user_register_incwhere dt='2020-06-13'
)a,
(select count(*) as cntfrom(select user_id from dwd_user_register_incwhere dt='2020-06-13')t1join (select user_idfrom dws_user_user_login_tdwhere dt='2020-06-14' and login_date_last='2020-06-14'--拿到当天的分区,而且用户最后登录时间是 06-14号的数据)t1on t1.user_id=t2.user_id--两个表连接,拿到既是昨天新增,又是有今天登录的用户数据
)b

5.2 减少部分重复计算 方法

方法1中求新增用户数计算了两次

所以我们可以减少一个子查询

5.3 实际开发的做法(思路和上面差不多,不过更灵活)

思路:
(1)where筛选出用户注册表(dwd_user..)中有注册的用户。
(2)在用户历史登录表中求14号分区的数据。
(3)根据 dt 时间分组,就可以知道用户注册表中每个用户是在哪一天注册(新增)的了,所以count(*)时,也是统计当天分区 有用户注册的数据(新增的用户数)。
(4)if()筛选14号留存的用户数, 然后留存率=某天用户留存数/用户新增数。!这里有个小细节:
group by dt (分组时只用来dt), 但是在select中使用了不是分组字段的
datediff('2020-06-14',dt),也没有报错的原因是-->
group by 分组后 ,一般select可以查询分组字段和max()和sum()等聚合函数,
还可以查询 使用了udf函数的分组字段,满足一进一出即可,如datediff('2020-06-14',dt)。select'2020-06-14' ,dt ,datediff('2020-06-14',dt) ,sum(if(login_date_last='2020-06-14',1,0)) retention_count,count(*) new_user_count,cast(sum(if(login_date_last='2020-06-14',1,0))/count(*)*100 as decimal(16,2)) retention_rate
from
(selectuser_id,dtfrom dwd_user_register_incwhere dt>=date_add('2020-06-14',-7)and dt<'2020-06-14'
)t1
join
(selectuser_id,login_date_lastfrom dws_user_user_login_tdwhere dt='2020-06-14'
)t2
on t1.user_id=t2.user_id
group by dt;

电商指标之用户留存率相关推荐

  1. 8000字干货 | 教你打造电商产品的用户体系

    本文由作者 书丰 发布于社区 对于任何电商产品来说,没有用户的产品是没有未来的,拥有用户但却不懂用户的产品也是没有未来的.产品经理需要从心理上去理解用户.预判用户的行为,在现实中挖掘用户的需求,从行动 ...

  2. 【报告分享】2021年中国五大主流电商平台关于用户数据的最新规则汇总.pdf(附下载链接)...

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 大家好,我是文文(微信号:sscbg2020),今天给大家分享纷析智库和夸克网于2021年9月份联合发布的报告& ...

  3. Z04 - 999、Flink与电商指标分析

    初学耗时:999h 注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端. 『   因为要去见那个不一般的人,所以我就不能是一般人.』 1.Z04系列全套网盘资源: Z04系列全套 ...

  4. B2B电商营运「增长6步走,如何激发电商购买与用户参与度?」

    数字化普及,千禧年代用户逐渐成为B2B采购的中坚力量.传统制造业也纷纷「触电」,将销售触角衍生至电商在线探索,即B2B电商.但面临专业的B2B内容语境与漫长的成交周期,如何方能捕获商机,激发成交? 欢 ...

  5. 电商指标详细介绍和推荐系统常用评估指标

    本文主要是针对电商中的常见指标进行归类介绍,包括推荐系统中需要关注的指标.本文主要分为三部分进行说明: 电商分类介绍 电商的指标分类介绍 电商推荐系统常看的指标 1. 电商的分类 电子商务(Elect ...

  6. 电商淘宝用户行为分析

    一.项目介绍 本次实战的数据是来自阿里巴巴提供的一个淘宝用户行为数据集,用于隐式反馈推荐问题的研究. 数据下载:https://tianchi.aliyun.com/dataset/dataDetai ...

  7. 电商指标项目-背景及技术选型

    1. 项目背景 1.1. 项目简介 公司有一个正在运营中的电商网站,名称叫做[京京购].这是一个B2B2C的电商平台,类似京东. 现在我们想了解一下该电商网站的各种用户行为(访问行为.购物行为.点击行 ...

  8. 电商平台给用户推大胸妹,为什么是一个很糟糕的结果?

    今天和大家聊聊推荐算法,最近发生了一件挺有意思的事情,双十一那天打开了某电商app,首页推荐居然长这样-- 可能在很多lsp们看来,这样的推荐结果不仅没有任何问题,反而非常好.今天就和大家简单聊聊关于 ...

  9. 数据分析案例--电商指标的实际应用

    数据分析案例--天猫订单分析 数据分析的一般过程 数据来源及内容 天猫订单分析过程 数据分析的一般过程 明确项目背景,待解决的问题 : 分析逻辑,画出逻辑树,明确分析过程中的指标 : 提数分析,同时进 ...

  10. 前众信旅游B端产品经理吴彪:如何搭建B端电商产品及用户体系

    嘉宾介绍 吴彪,北京树下科技有限公司创始人.于2016年4月1日起,脱产自学产品经理,并在豆瓣中,坚持每天记录,热心于把转型经验分享给产品新人,因此身边聚集了数百位产品经理. 2016年5月初,进入众 ...

最新文章

  1. 手把手玩转win8开发系列课程(11)
  2. python爬虫软件-一些Python爬虫工具
  3. python将字符转换为字典
  4. 报错 POST http://192.168.79.165:8015/marketing/manager 400 (BAD REQUEST) 解决办法
  5. GlusterFS架构与维护
  6. JVM垃圾收集器与内存分配策略学习总结
  7. 【BZOJ1014】【tyvj3486】火星人prefix,Splay+字符串hash
  8. 1.4通过时间的方向传播
  9. ssis 包配置组织程序_如何停止失控的SSIS程序包
  10. Kaggle 年度报告出炉:数据科学家年轻高学历,薪资近百万
  11. 网络生活催生新式词汇
  12. 私人定制-代码生成器3
  13. 推荐系统实例-基于矩阵分解
  14. 【元胞自动机】基于matlab激进策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型【含Matlab源码 1297期】
  15. 【原创】基于Qt5.14的一站式安卓开发环境搭建
  16. perl 十六进制转二进制
  17. 〖Python 数据库开发实战 - MySQL篇⑪〗- 修改数据表结构
  18. jsp中空格字符怎么写_jsp多个空格符号怎么打
  19. 怎样快速将pdf转成excel
  20. 什么是网络推广以及如何做好网络推广

热门文章

  1. 详解JAVA对象实例化过程
  2. 白盒测试-条件组合覆盖
  3. 基于AT89S52单片机的汽车尾灯控制电路设计
  4. win10更新后没有计算机了,win10更新后 ,没有处理器电源管理怎么办?
  5. MAC和IP地址伪造发包
  6. codesmith for java_codesmith 入门介绍【转载】
  7. powerdesign165破解以及使用教程
  8. SecureCRT 设置会话永不过期
  9. 玩转诺基亚5800XM,新手上路指南
  10. 苹果mp3软件_软件 | 剪辑软件大合集2020405