第1页
如何700行代码山寨一个Google Analytics
叶毅锋
2014/08/16
第2页
About Me
Python/Linux重度使用者
伪R语言爱好者
业余摄影爱好者
某法律电商数据分析师(用户行为方向)
第3页
目录
网络行为跟踪的基本知识
如何实施跟踪?
User/Session/Hit(用户/会话/击中)
Dimension & Metric(维度与指标)
回答问题
GA的痛点
GA的计算原理
GA的山寨版--WA构架
第4页
为什么选择GA?
用户行为收集的瑞士军刀
第5页
补充一些行为跟踪的基本知识
如何实施跟踪?
User/Session/Hit(用户/会话/击中)
Dimension & Metric(维度与指标)
回答问题
第6页
如何实施跟踪
网站部署js
日志分析
第7页
User/Session/Hit
User 访问者
Session 访问者在这个网站的浏览过程,一般是有条件限制的
Hit 一次击中,例如看了一个页面,触发了一个事件
第8页
User/Session/Hit三者的关系
第9页
访问者小明律师
9:10看了页面A
9:20看了页面B
14:20看了页面C
14:30回答了一条咨询
15:30看了页面D
23:50看了页面F
半夜00:10看了页面C
睡觉了
这个例子里的
User/Session/Hit
分别是哪些
第10页
访问者小明律师
9:10看了页面A
9:20看了页面B
14:20看了页面C
14:30回答了一条咨询
15:30看了页面D
23:50看了页面F
半夜00:10看了页面C
睡觉了
第11页
Dimension & Metric
维度描述事物的属性,例如律师名字/性别/咨询分类
指标描述事物可度量的属性,例如在线时间/登陆次数/回答咨询数
第12页
律师所在地与回答数的关系
哪个是维度?哪个是指标?
第13页
问题
哪些页面的PV最多?分别是多少?
第14页
第15页
维度
指标
第16页
探讨GA的计算原理
第17页
提出问题
ask频道在2014-06-01有多少人访问?
第18页
一张表,记录了所有的Hit
ask频道在2014-06-01有多少人访问?select count(distinct userID) as uv from log where dmy=20140601
ask频道在2014-06-01的PV有多少?select count(1) as pv from log where dmy=20140601
第19页
ask频道在2014-06-01这天每个小时的PV是多少?
select hour,count(1) as pv from log where dmy=20140601 group by hour
第20页
不同层次维度指标的储存策略
User/Session/Hit scope的各维度指标都有一套相应的储存策略
第21页
痛点!
如果查询量会涉及超过50w个session,就会返回simple data(抽样数据)
每次查询不能超过7个维度,但很多时候10几个维度一起是很正常的,我们唯有多次查询来达到目的
每个月限制1kw个hit自定义维度的值不能超过50w
自定义维度和指标不超过20个,不过我们也用不上这么多
如果要跟我们数据库里的数据相结合,要写程序来获取GA的数据,再来结合,这个比较浪费时间和精力
夜黑走路也会碰墙
数据掌握在谷歌手里,你不能下载或者备份
第22页
新建轮子WA
解决自己的痛点
第23页
前台代码部署
修改analytics.js文件,令原来发送到google-analytics.com的信息发送到我们的服务器
优点:
完全兼容Google Analytics,在我们前台部署代码的基础上不需要做任何更改
坑都被Google填好了
第24页
Nginx日志收集
发送到我们服务器上的信息将会被日志记录下来
日志会即时按天分割,转存
第25页
日志分析
对日志进行分析,提取ip/日期/路径等基础信息
排除spam/非法数据
把处理后的信息存入数据库(Imapal/Infinidb)
每一条日志其实都是一个hit
到了凌晨,把昨天的所有session做结束处理
第26页
Q&A
小广告:
低调招聘初中级PHP工程师若干
有意者发dyfeng@lawjob.cn