spark 高级函数lag应用--session划分

spark lag高级函数应用--Session 划分

需求分析

有一组数据是用户观看观看视频,浏览网页的记录,三列:user_id,start_time,end_time
在这里插入图片描述用户从start_time开始浏览网页,到end_time结束浏览当前网页,我们想对用户的观看进行session划分,规定如果用户的访问间隔超过一天,那么就认为这两条记录是两个session的数据,否则是一个session的数据。

lag/lead 函数解释

他们都是window 函数,常见的window函数是row_number, 先贴出spark源码官方解释以免解释不清造成误解。在这里插入图片描述1.对于lag: 有三个参数column, offset. column就是你想取值的那一列,offset就是你想向上取第几列的值。1表示当前行的前一行,2 表示当前行向上数第二行。defaultValue就是默认值
用法 : 首先分组排序逻辑

 import org.apache.spark.sql.expressions.Window
 val win = Window.partitionBy("user_id").orderBy("start_time")
val dfx = df.withColumn("befor_end_time",F.lag($"end_time",1).o
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值