如何对统计结果进行测试验证?

这是问句,因为我也不知道如何彻底解决!
统计数据的准确性是需要产品,开发,BI,运行之间互相沟通的。
现在出现的问题经常会发现几个统计数据之间不一致。这种原因我自己也检讨过。首先由于网站程序一直在变更,比如之前加入了一个退会功能,结果把有些ID的数据全部给删除了。那由于统计时间不同导致用户数据都不一样。
第二个问题是有些不同程序的逻辑不一致,比如login和游戏记录用户登陆的算法居然还不一致,我想怎么会游戏登陆人数居然比登陆网站的人还多。但是如果要更改就会导致网站中很多程序都要更改,更改还需要进行测试。但是统计的测试跟普通的功能测试和性能都不一样,你必须考虑到各种各样的情况导致数据记录的不一致。
第三个问题是数据源不一致,有些开发喜欢打日志,有些喜欢记录数据库。无论是日志和数据库记录都会涉及到最终数据合并的问题。但是有时候还是会发现数据会存在个位数的差异。
所以要保证统计结果的一致性,首先我们要保证数据源的一致性,这个就需要搭建好数据仓库,然后所有的统计数据都从这里来进行获取,这样就从源头上规避了数据源不同导致的统计结果不一致。搭建数据仓库的另外一个意义是不会程序在数据库中删除数据也导致的不同时间统计导致最终结果不一致。
逻辑上的问题分为2种。一种是网站程序的逻辑,这个开发和BI,运营之间必须要确定好。其次是统计脚本的逻辑,这个前面忘记说了,统计脚本的逻辑则需要BI和运营之间要协调好。比如你要计算网站登陆率,那分母一般网站的注册人数,而如果这个网站有激活步骤的话,那分母是否要变成激活人数?
现在最主要的工作就是如何建立合理的数据仓库。而运营的需求是要知道这个用户从哪个广告或者网站注册进来,之后又是从网站哪个入口进入到网站,以及进来之后每一步的操作,以及所有的用户个人资料。由于要详细到每个人,所以这个数据仓库肯定就会非常大了,如何建库建表真是个问题,而且MySQL还缺乏那么多分析函数,由于现在还在搭建阶段,真想放到postgresql8.4中。

2010-04-09

Best regards
Timo Seven
blog: http://www.timoseven.com
#####请翻墙浏览,或者指定hosts到74.200.243.252#######
twitter: https://twitter.com/zauc
######也请翻墙浏览####################
UNIX System Admin & MySQL DBA

urchin中最常见内容中显示域名

在urchin显示的内容优化–最常见内容中默认是不带有域名的。例如
http://www.abc.com/test.html这里就只显示test.html,而万一我有test.abc.com/test.html那我就搞不清楚到底哪个是www子域名下的,哪个是test子域名下的。为了解决问题查看了urchin的帮助文档,居然还有现成的。
https://secure.urchin.com/helpwiki/cn/How_do_I_track_all_of_the_subdomains_for_my_site_in_separate_profiles%3F

   Filter Type: Custom filter > Advanced
   Field A: cs_host (Raw)
   Extract A: (.*)
   Field B: Request_Stem (Auto)
   Extract B: (.*)
   Output To: Request_Stem (Auto)
   Constructor: /$A1$B1

但是实际使用中却始终无法正常显示出来。为了解决这个问题无奈只好一个个查看urchin各个字段的解释。在http://www.google.com/support/urchin45/bin/answer.py?answer=28623&topic=7396你可以看到所有字段的解释

因为既然urchin能够获取主机名,那这里肯定也是可以显示的。最后解决问题的方法是:

   Filter Type: Custom filter > Advanced
   Field A: utm_request_hostname (AUTO)
   Extract A: (.*)
   Field B: Request_Stem (Auto)
   Extract B: (.*)
   Output To: Request_Stem (Auto)
   Constructor: $A1$B1

然后必填字段A 选择是,必填字段B选择否,覆盖输出字段选择是,区分大小写选择否。

这下终于OK了。

urchin的安装及使用

Urchin是google收购的一个日志分析工具。界面跟google analytics是几乎完全一样的。但是google analytics每个月的统计只能在500W PV以内,这个对于稍微有点规模的网站是不可忍受的。所以我们还是需要自己来架设一个urchin 首先需要下载一个urchin6501_linux2.6_kernel.tar.gz 这个是根据自己monitor的系统版本来进行确定的。然后还需要有一个mysql或者postgresql 创建相应的数据库和数据库用户。这里数据库名为urchin,数据库账户为urchin,urchin的账户密码为urchinapassword, urchin账户拥有urchin库的all权限。

root@monitor# mysql -u root -p
mysql> create database urchin character set utf8;
mysql> GRANT ALL ON urchin.* to 'urchin'@'10.2.%' IDENTIFIED BY 'urchinpassword';

接着使用程序目录下的install.sh脚本进行安装,这里主要是选择安装目录,数据库配置连接等等。

 ./install.sh 

安装完成后就可以通过下列网址查看urchin

http://yourserver:

修改admin用户的密码,因为我实在不知道默认admin的密码是啥

/usr/local/urchin/util/uconf-manager table=uusers action=update ucus_name="admin" ucus_password="123456" key1=ucus_name print=status

这里是把admin用户的密码设置为123456

这样我们就能通过上面的网站看到urchin的界面了,记住了申请试用必须使用IE来进行。Firefox一直有些界面看不到。

其他配置:

首先需要一个域名下放置urchin.js这个js代码。这个代码需要修改如下部分。

//-- UTM User Settings
var _udn="xiaonei.com";               //这个是你网站一级目录
var _ugifpath="http://track.xiaonei.com/__utm.gif";  //__utm.gif的地址

track.xiaonei.com 这个最好是独立的域名,这样urchin就不会分析这个域名内其他不相关的日志了。

__utm.gif和urchin.js都在安装文件中存在,根据上面的建议进行修改和放置。

关于日志配置:

默认nginx的日志格式,urchin是无法进行分析的。还必须要做相应的修改后urchin才能进行分析。

log_format urchin '$remote_addr $http_host - [$time_local]  "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_cookie"';

新建配置:

Urchin默认是英文界面,可以在显示中选择中文。基本设置如下:

step1

step2step3step4

urchin的原理:就是在所有的页面都会嵌入这个urchin.js来访问那个__utm.gif图片,通过这个来收集用户本地的相关信息来记录到gif图片域名下的日志中,然后urchin就来分析这个日志,所以这个分析结果的内容会比一般的多。

xiaonei