用户行为分析-事件分析模型
这篇对事件分析做简单总结
用事件的概念来描述用户的行为,包含时间,地点,人物,方式等要素,这也是常见的做法
1、是什么?
事件分析是基于用户的行为数据,也就是事件数据,对用户行为进行多维度,多条件的指标分析和统计,分析用户的行为模式。
常见的指标有:此类行为的次数,用户数,属性值的统计数,总和,均值等,
多维分析则是指根据某个属性对用户进行分组划分,
多条件分析是通过属性值控制,筛选出特定的人群进行分析
2、如何实现?
用户的行为数据必定是巨大的,通过埋点采集的用户行为会存储在hive的明细表中,或者其他存储系统。我们采取的是hive hdfs存储,使用日期+事件名作为hive分区,既先通过日期,再通过事件分区。
可快速检索,修改数据也不会影响过其他事件,压缩格式使用ORC,较parquet有能搞的压缩比和查询效率,当然也是其不足之处。
事件分析为了实现其灵活性,实现其多维分析,多条件分析,必须直接使用明细数据,不能做预处理,同时是即席查询对计算引擎的要求较大,选择的是presto作为计算引擎,并且方便做二次开发,UDF等函数开发,后面很多复杂分析也是通过presto自定义函数实现的。
在系统功能的实现难度上:
1、前端的复杂交互设计,支持多事件选择,多指标,多维度,事件的多条件等等
2、接口参数设计,解析成最终能执行的SQL,并且支持多表操作,如后期支持用户信息表,用户分群表联合对事件数据做筛选
3、查询性能,即席查询需要控制时间在10-20s,大部分查询需要在此时间范围内完成(目前数据量相对较少,暂时没有做过多优化,如近似统计函数,缓存)