如何计算用户会话的开始和结束时间



是否有一种建议进行以下类型的转换类型的方法:
输入:

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]

通过用户ID进行分组会导致会话信息丢失。与使用窗口函数一样。

为了清楚地编辑:在这种情况下,请注意结果集中用户U1出现2次。用户U2的操作将U1的动作分为两个会话。

使用Good Ol'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")

相关内容

  • 没有找到相关文章

最新更新