五数分析法及相关应用

五、知识充电

五数概括
http://baike.baidu.com/view/1547702.htm
四分位数
http://baike.baidu.com/view/999573.htm
四分位数
http://zh.wikipedia.org/wiki/%E5%9B%...BD%8D%E6%95%B0
移动平均线
http://www.yhqh.net/html/74-17/17557.htm
R语言学习命令和绘图
现代统计图形
http://image.sciencenet.cn/olddata/k...1738289241.pdf
R语言基础和画图方法
http://www.biostatistic.net/forum.ph...e_pos=5&ext=CB
箱形图实际是将五数分析图形化了,用来观察一定时间内的数据异常点
http://baike.baidu.com/view/1376547.htm


六、分析细节
五数概括对前一天一个月的数据,进行排序,取最小值,最大值,将分数据分成三个区间
最小值、Q1、Q3、最大值
算一个区间值:区间=(Q3-Q1)*1.5 ,1.5为经验值
下界值= Q1-区间、上界值= Q3+区间
如果下界值小于等于最小值,就取最小值
如果上界值大于等于最大值,就取最大值

七、应用实现
由于WEBSQL的权限问题,无法部署MySQL存储过程,即使部署了也无法执行,放弃了MySQL存储过程的想法,采取了折中的办法来处理,向苏普申请了数据导出权限,
写了个Oracle的存储过程来计算五数概括法,由于不能直接执行操作数据库,只能增量的将MySQL数据库的数据导入oracle才能对数据进行分析,不过PLSQL已经有很好的数据导入功能,
也不是太麻烦,可用性还是有的。本过程采用的是动态SQL编写,也支持任意表的某时间段的任意字段的数据分析!下面对存储过程的一些逻辑做些说明备注
分析功能包括如下四个部分 (见附件)
1.recommendation_wufenshu_auto
2.exe_wufenshu_auto
3.SQL_TO_CSV
4.job

recommendation_wufenshu_auto 为主体逻辑,主要是五数概括法的计算逻辑,计算完成会生成结果集存放在wuweishu_count_result表,用法举例:
执行存储过程如下:
begin
  -- Call the procedure
  recommendation_wufenshu_auto(app_name => :app_name,
                               table_name => :table_name,
                               column_name => :column_name,
                               select_date => :select_date,
                               delete_history => :delete_history);
end;
app_name 应用名称
table_name 需要分析的表名
column_name 需要分析的列,可以使计算后的列,如果是取商,SQL会自动剔除除数为0的数据,如果是百分位数,请在字段后面加入“%”符号,那么结果也是带百分位的
select_date 需要分析的时间段,可以使是任意时间,如果转入的是20120711,那么就分析20120711在20120610到20120710的波动是否正常,如果不是具体时间就是分析昨天的数据,所以参数可以传sysdate,yestday或空,就是分析昨天的数据在前一个的波动情况
delete_history 是否删除wuweishu_count_result表之前的分析结果,如果为1或者delete,wuweishu_count_result表就只会看到本次分析的结果,如果想保留之前的结果,就传空字符串,或不为0和delete字符串就行了
实例:
exec recommendation_wufenshu_auto('收藏宝贝弹出层','scene_effect','round(100*open_count/view_count,2)%','yestday',1);
exec recommendation_wufenshu_auto('加入购物车弹出层','scene_effect','round(100*open_count/view_count,2)%','yestday','');

一般我们是分析一个月的数据,对数据进行了剔重,因为在试用阶段发现,存在重复记录,这里需要对源数据进行剔重处理,保证分析的准确性
如果是按月统计数据一般会大于28条小于32条,如果数据缺失或不对,会提示:“如果是按月统计你可能要检查一下源数据是否存在数据缺失或错误!”

上面可以看出,我们可以对scene_effect表任意场景任意数据进行五位数概括分析,展示次数、打开次数、失效次数、点击率、失效次数、alipay金额、占比、scm金额

exe_wufenshu_auto 执行存储过程
由于需要分析的场景过多,之前我们都是去关联推荐后台进行勾选查看,说实话眼睛看痛,效果不佳,于是有第二个存储过程,执行存储过程exe_wufenshu_auto,这个过程是没有任何业务逻辑
可言的,就是将11个场景和你需要执行看到的东西放一起,一次性生产结果集,如果只是看某个或某个场景的数据执行recommendation_wufenshu_auto就够了。看个人习惯!

SQL_TO_CSV 负责将执行结果导出CSV数据文件到指定目录

job 调度(有了预处理文件后,导入数据的同时就执行了,可不用)
有了exe_wufenshu_auto 执行存储过程,为了更方便些,弄了个调度,这个调度是每天下午1:15执行,scene_effect表的数据是每天12点钟生成,数据导入后,
每天1:15产生wuweishu_count_result表结果集


八、附加功能
附加功能1 relationrecommend_report
recommendation_wufenshu_auto 中集成了日报的一个功能,每次发日报,都需要勾选11个选项,导出报表,将十位制的阿拉伯数字转换为中文阅览,比如转换为多少亿,多少千万、百万等
一勾选麻烦,二手动转换易错,麻烦,这里直接生成relationrecommend_report表了
用法跟上面描述一样,举例:
exec recommendation_wufenshu_auto('收藏宝贝弹出层','scene_effect','relationrecommend_report','yestday',1);
exec recommendation_wufenshu_auto('加入购物车弹出层','scene_effect','relationrecommend_report','yestday','');

附加功能2 场景环比、同比跌涨分析(弃用)
同样执行存储过程会给出相应场景的具体分析
exec recommendation_wufenshu_auto('收藏宝贝弹出层','scene_effect','relationrecommend_report','2012-07-23',1);

九、生成报表
上面的功能完成后,就是导入数据了,目前必须要从WEBSQL导入数据到本地Oracle服务中才能执行过程输出统计结果
写了个load-insert-oralce.bat预处理脚本,主要任务:
1.解压从WEBSQL中导出的RAR数据
2.导入到Oracle数据库
3.插入alipay金额及占比数据
4.执行exe_wufenshu_auto过程,通过recommendation_wufenshu_auto过程会生成统计结果CSV文件到指定目录

猜你喜欢

转载自zhoushu126.iteye.com/blog/1901275
今日推荐