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