如何计算用户会话的开始和结束时间? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何计算用户会话的开始和结束时间? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

是否有推荐的方法来执行以下类型的转换: 输入:

userID  timestamp  action  
u1      100        edit1
u1      122        edit2
u1      135        edit3
u2      143        edit4
u2      158        edit5
u1      212        edit6
u1      241        edit7

输出:

userID  startTime  endTime  actions
u1      100        135      [edit1, edit2, edit3]
u2      143        158      [edit4, edit5]
u1      212        241      [edit6, edit7]

按userID分组会导致会话信息丢失。与使用Window函数相同。

为清晰起见编辑:在这种情况下,请注意用户u1在结果集中出现2次。用户u2的操作将u1的操作分解为两个会话。

答案

使用好的'SQL'聚合所有列:

SELECT userID min(timestamp), max(timestamp), collect_list(actions)
FROM df GROUP BY userID

或数据集API:

df.groupBy("userID").agg(
    min("timestamp") as "startTime",
    max("timestamp") as "endTime",
    collect_list("actions") as "actions")

以上是关于如何计算用户会话的开始和结束时间? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在给定开始和结束时间的情况下计算并发会话

从开始和结束时间跨度得出的每分钟会话数

Android应用开始和结束事件

如何使用事件来计算 eas 中重复事件的结束日期

如何结束用户会话令牌并刷新令牌,时间超过 25 分钟

如何避免在会话开始时出错[重复]