窗口函数lead
功能:用于从当前数据中基于当前行的数据向后偏移取值
语法:lead(colName,N,defautValue)
colName:取哪一列的值
N:向后偏移N行
defaultValue:如果取不到返回的默认值
我们可以基于用户的登陆信息,找到如下规律:
连续两天登陆 : 用户下次登陆时间 = 本次登陆以后的第二天
连续三天登陆 : 用户下下次登陆时间 = 本次登陆以后的第三天
……
我们可以对用户ID进行分区,按照登陆时间进行排序,通过lead函数计算出用户下次登陆时间
通过日期函数计算出登陆以后第二天的日期,如果相等即为连续两天登录。
with t1 as (
select userid,
logintime, --本次登陆日期的第三天
date_add(logintime,2) as nextday, --按照用户id分区,按照登陆日期排序,取下下一次登陆时间,取不到就为0
lead(logintime,2,0) over (partition by userid order by logintime) as nextlogin
from tb_login )
select distinct userid from t1 where nextday = nextlogin;
–连续N天
select
userid,
logintime,–本次登陆日期的第N天
date_add(logintime,N-1) as nextday,–按照用户id分区,按照登陆日期排序,取下下一次登陆时间,取不到就为0
lead(logintim
HiveSQL使用窗口函数检测连续登录
本文介绍了如何利用HiveSQL的窗口函数lead,结合日期和时间函数,来检测用户连续两天或连续N天的登录情况。通过预处理数据并创建滑动时间窗口,可以分析用户在特定时间间隔内的连续登录行为,例如5秒或2小时。对于更复杂的连续登录需求,建议使用Flink的滚动或滑动窗口功能。
订阅专栏 解锁全文
848

被折叠的 条评论
为什么被折叠?



