AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

如何700行代码山寨一个Google Analytics by 叶毅锋

发布者 FEer   简介 前端技术
发布于 1431648187535  浏览 7587 关键词 前端, PHP 
分享到

第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
支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。