如何将用户访问事件按规则分组生成各访客对应的活动会话列表
会话分析视图实现需求
你需要实现一个新的「sessions」分析视图,现有数据集包含多条独立网页访问记录,每条记录包含url、由跟踪Cookie生成的唯一访客标识visitorId、毫秒级时间戳timestamp,你需要基于这些数据为每个访客生成对应的会话列表。
数据集示例
{ "events": [ { "url": "/pages/a-big-river", "visitorId": "d1177368-2310-11e8-9e2a-9b860a0d9039", "timestamp": 1512754583000 }, { "url": "/pages/a-small-dog", "visitorId": "d1177368-2310-11e8-9e2a-9b860a0d9039", "timestamp": 1512754631000 }, { "url": "/pages/a-big-talk", "visitorId": "f877b96c-9969-4abc-bbe2-54b17d030f8b", "timestamp": 1512709065294 }, { "url": "/pages/a-sad-story", "visitorId": "f877b96c-9969-4abc-bbe2-54b17d030f8b", "timestamp": 1512711000000 }, { "url": "/pages/a-big-river", "visitorId": "d1177368-2310-11e8-9e2a-9b860a0d9039", "timestamp": 1512754436000 }, { "url": "/pages/a-sad-story", "visitorId": "f877b96c-9969-4abc-bbe2-54b17d030f8b", "timestamp": 1512709024000 } ] }
会话分组规则
基于上述输入数据,你需要将其分组为多个会话:会话定义为来自同一访客的事件组,组内相邻事件的时间间隔不超过10分钟,单个访客可拥有多个会话。
预期输出示例
{ "sessionsByUser": { "f877b96c-9969-4abc-bbe2-54b17d030f8b": [ { "duration": 41294, "pages": [ "/pages/a-sad-story", "/pages/a-big-talk" ], "startTime": 1512709024000 }, { "duration": 0, "pages": [ "/pages/a-sad-story" ], "startTime": 1512711000000 } ], "d1177368-2310-11e8-9e2a-9b860a0d9039": [ { "duration": 195000, "pages": [ "/pages/a-big-river", "/pages/a-big-river", "/pages/a-small-dog" ], "startTime": 1512754436000 } ] } }
注意事项
- 时间戳单位为毫秒
- 输入事件不一定按时间顺序给出
sessionsByUser中的访客顺序无要求- 单个访客名下的会话需按时间顺序排列
- 单个会话内的URL需按访问时间顺序排列
- 仅包含单条事件的会话
duration值为0 - 会话内除第一条外的所有事件,与同会话内前一事件的间隔需不超过10分钟,允许会话首尾事件间隔超过10分钟
内容的提问来源于stack exchange,提问作者Igor Parente
相关产品推荐
相关产品推荐

