暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

hive系列-求N日留存率(LEFT JOIN)

心中有数做事更溜 2021-10-12
2585
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
百度百科


APP的用户分析中常用的一个指标是留存率,用来评判用户对APP的使用粘性,依据不同的业务场景可以选取合适的计算方式,以日粒度的留存为例,如何计算得到N日的留存率呢?

假设我们有一个记录每个用户标识及访问日期的基础数据表,要计算1~N日的留存率,该如何处理?

以次日留存率为例=次日留存用户数/当日访问用户数,可以通过left join来实现查询,但如果要一次性计算多天的可以构造一个留存天数的辅助列来实现:

示例HQL:

    

SELECT  t.dt,t.days,count(DISTINCT uid)

FROM

(

/* 构建辅助字段days表示留存的天数,从0开始的整数*/

SELECT a.uid,a.dt,b.dt-a.dt AS days

FROM hdp_defaultdb.test 

LEFT JOIN  

hdp_defaultdb.test

on a. uid =b. uid

WHERE a.dt<=b.dt  /* 要求留存日期大于访问日期*/

GROUP BY a.uid,a.dt,b.dt-a.dt

)t

GROUP BY  t.dt,t.days


步骤详解:

1-数据源的表内容示例:

2、进行关联后的数据表结果:

3、再进行一次汇总后的结果为:

这样就快速算出来了。


作为数据分析师,数据是分析的基础材料,数据获取的能力是硬技能,所以hive技能必须要掌握,hive系列计划写一些使用频率高的小知识点。


最后,借楼立个flag:本号至少要保持月更。

文章转载自心中有数做事更溜,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论