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

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

twitter: https://twitter.com/zauc ######也请翻墙浏览####################
UNIX System Admin & MySQL DBA