数据集来自mongodb数据库,将bson格式转为json格式。每行是一个行为事件。
首先要从无序的数据集里,恢复出每个用户的行为事件的时间序列,然后才能进行有效的后续分析。
1. 一个行为事件的数据记录,数据结构如下:
{
'deviceInfo': {
'operationSystem': 'iOS',
'phoneModel': 'iPad4,8'},
'beginTime': '2016-09-16 04:17:54',
...
}
其中,beginTime是这个事件发生的开始时间,endTime是这个事件的结束时间。凑齐若干个事件上传到mongodb服务器。
2. 用户标识问题:
一个用户,在没有登录的情况下,其操作产生的事件,是没有userId的。
可以用硬件指纹识别,这个值是固定的,且非常有可能跟userId进行绑定。一个手机可能登录多个用户,因此userId和idfa不能一一对应关系。
3.一个用户的操作过程,表现一组事件。比如,如下是一个用户的完整操作过程,用硬件指纹进行标识。
4. 登录用户的转化率分析处理
4.1 对数据进行处理,过滤掉没有userId信息的记录。
4.2 根据userId对事件进行重排,也就是说,将一个userId产生的所有事件按照时间先后排序,视为一个Case,也就是一个用户的完整踪迹记录。
4.3 一个用户可能在多天内多次登录,为了区分多次登录,需要将记录切分,也就是说,要区分每次登录,每次登录包含若干个事件。
5. 根据一组组事件,再细化需求,分析用户行为。
6. 数据上报到Mongodb-->数据清洗到hive-->hive/impala数据汇聚成特定需求子集-->处理子集/关系库计算缓存-->对外提供json rest api查询功能。