刚下完班的时候,在公司无聊的坐着,一位同事拿了一些数据给我,说让我实现一个类似交叉表格的统计报表。

我原以为是最多十几分钟就搞定的事情,没想到花了2个小时,所以印象比较深,就把全过程记录了下来

源数据就是个日志文本信息

2008/1/11 02:14:33:181 181 00001c68 SeqID 418370 ToBack()=TRUE Len=154 MsgID=x00000202

2008/1/11 02:14:33:181 181 00001c68 SeqID 418370 ToFront()=TRUE Len=260 MsgID=x08000202 BEIP=192.168.1.162 BEPort=22049

2008/1/11 03:05:42:330 330 00004110 SeqID 418370 ToBack()=TRUE Len=154 MsgID=x00000202

2008/1/11 03:05:42:346 346 00004110 SeqID 418370 ToFront()=TRUE Len=261 MsgID=x08000202 BEIP=192.168.1.163 BEPort=22049

要的结果是统计一下,各时段对应的超时毫秒的数量

理论上也不复杂,能找出数据规律,进行分组统计而已,但问题在于:

首先统计是上下文相关的,即通过上下文的数据相计算才能获取到相应的指标

其次如何判断上下文的场景,根据几组字段判断都有问题,即得不到唯一的标示

原来想着应该是轻而易举的事情,先把数据导入oracle吧

有日期有时间,需要把文本的日期时间处理成oracle的date类型,可偏偏date类型不支持毫秒运算,第一个问题出来了,依赖于日志中已有的毫秒进行上下文计算又有一定的问题。

先统计了再说吧

select b.hours,

case when overlap<10 then '<10ms'

when overlap<20 then '10-20'

when overlap<30 then '20-30'

when overlap<40 then '30-40'

when overlap<50 then '40-50'

when overlap<60 then '50-60'

when overlap<70 then '60-70'

when overlap<80 then '70-80'

when overlap<90 then '80-90'

else '>90ms'

end tt,

count(*)

from

(

select a.f,a.d from

(

select k,a,b,f,d,g,c,

LAG(c, 1, 0) OVER (partition by f,dORDER BY B,g) lastc,

LAG(b, 1, 0) OVER (partition by f,dORDER BY B,g) lastb,

case when c - LAG(c, 1, 0) OVER (ORDER BY tt)>=0then c - LAG(c, 1, 0) OVER (ORDER BY tt)

else c - LAG(c, 1, 0) OVER (ORDER BY tt)+1000 end aa

fromtest6 t

) a

where a.g='ToFront()=TRUE' anda.aa>90 )

order by f,d,b,g

) b

group by b.hours,

case when overlap<10 then '<10ms'

when overlap<20 then '10-20'

when overlap<30 then '20-30'

when overlap<40 then '30-40'

when overlap<50 then '40-50'

when overlap<60 then '50-60'

when overlap<70 then '60-70'

when overlap<80 then '70-80'

when overlap<90 then '80-90'

else '>90ms'

end

结果统计出来了,结果非预期的,又对几条数据进行了统计和明细的对比,发现确实有些小问题,可问题出在哪里,也说不清楚。

为了解释清楚这个问题,还是对数据加上行号吧,再次进行对比,发现数据的位置变化了,和原本的日志顺序是不一样的。

为了解决这个问题,还是用rownum加上表数据生成到另外一张测试表吧,再去看看行号和日志的顺序是否能够对应,却发现日志的插入顺序和行号是不一致的!

又问了下同事,业务逻辑到底是怎样的,答曰:日志中上下文的顺序是很严格的

看来需要彻底解决行号问题了。

又在Excel中做了一下测试,Excel做测试很容易,先获取上条记录的毫秒信息,再进行排序,再把数据进行筛选,然后再进行分组判断,最后进行交叉表的生成。

对应大数据量来说,Excel的拖拉显然就满了很多,其次还需要函数、排序、复制数据,总的来说还是比较耗时的。

还是想想怎么解决行号问题吧,确保行号就是数据的原始顺序,首先加了一个sequence,后来又在该表中增加了一个触发器,然后把数据重新导入一遍

create or replace trigger trigger_test6

before insert on test6

for each row

declare

begin

select tt.nextval into :new.tt from dual;

end trigger_test6;

再去验证数据的顺序,这次才算正常了

数据正常了,业务逻辑就简单多了,只需要把最内核的部分修改一下,按行号排序即可

select rr,k,a,b,f,d,g,c,

LAG(c, 1, 0) OVER (ORDER BY tt)lastc,

LAG(b, 1, 0) OVER (ORDER BY tt)lastb

from test6 t

统计完成后,再拷贝到Excel中进行数据透视表转换,再把表格数据拷贝出来,加一些美观信息即可。

该件事情还是没有得到完美解决

主要是毫秒的处理,理论上是时间的直接相减即可,可由于Oracle的date类型无法直接处理,只能采用日志中的毫秒字段进行相减了,碰到相减为负的,则再加回来1000,多少有些问题。

再其次,oracle导入时的数据顺序有问题,不过我想也许是我自己还没找解决问题的根本原因吧。

一次数据分析的全过程相关推荐

  1. python猿辅导_如何用数据分析方法剖析“猿辅导”K12课程

    前言 本次分析只是用猿辅导的案例来分享数据分析的思路和方法论.禁止将分析结果用于任何商业目的以及非法行为,若引起法律纠纷后果自负.同时声明数据来源与猿辅导官网关键指标数据未必真实. 概述 笔者将通过以 ...

  2. 遗传:微生物组数据分析方法与应用

    本文版权归<遗传>杂志,已获授权,转载请联系杂志社 微生物组数据分析方法与应用 刘永鑫1,2,秦媛1,2,3,郭晓璇1,2,白洋1,2,3 1. 中国科学院遗传与发育生物学研究所,植物基因 ...

  3. python数据分析的主要流程-Python数据分析全流程实操指南

    内容全面:借助5大Python工具库,实现数据分析从获取到建模全流程覆盖: 贴合实际:不空讲Python语法,清晰简明地介绍如何用Python来处理.分析数据: 热点案例:覆盖6大热点应用领域,可直接 ...

  4. python excel数据分析实战_一次完整的数据分析实战!仅用4步,效率吊打Excel和Python...

    我最近发现很多人都走进了这样一个误区:觉得业务数据分析是专业的数据分析岗位的人才需要做的事情,业务人员只需要给他们提需求就可以了. 但实际上业务人员一点数据分析都不会就是只会打仗,不会算账,缺乏了统筹 ...

  5. 学习生信的系列教程 | 留言您是如何学习生信的免费获取北大出版《Python数据分析》书籍...

    生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题.但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视频后就直接写程 ...

  6. 一次完整的数据分析实战!仅用4步,效率吊打Excel和Python

    我最近发现很多人都走进了这样一个误区:觉得业务数据分析是专业的数据分析岗位的人才需要做的事情,业务人员只需要给他们提需求就可以了. 但实际上业务人员一点数据分析都不会就是只会打仗,不会算账,缺乏了统筹 ...

  7. 我用Python做了一个咖啡馆数据分析

    在做案例前,我还想回答大家一个疑问,就是excel做数据分析可以实现Python一样的效果,那用Python的意义在哪呢? 经过这段时间学习理解,我的回答是: (https://jq.qq.com/? ...

  8. 一个案例告诉你Smartbi自助数据分析工具有多实用!

    ​自助数据分析是一个迭代分析过程,在一轮又一轮的分析过程中后得到对数据的洞察,不断产生有价值的派生数据,最终形成分析结果,并落实为企业的管理行动. ​自助数据分析是一个迭代分析过程,在一轮又一轮的分析 ...

  9. 福利 | 《人工智能之数据挖掘》报告发布:北京相关学者流动人次最高(附下载)...

    来源:学术头条 本文约1600字,建议阅读5分钟 本文介绍了数据挖掘的最近研究进展,并展望了数据挖掘的未来发展趋势. 文末有数据派THU福利哦 近日,由清华大学人工智能研究院.北京智源人工智能研究院. ...

最新文章

  1. python 做个创越火线挂_一日一技:用Python做个能挂墙上的大钟表
  2. centos 桥接配置 设置网络代理 lnmp搭建
  3. 当推荐系统遇上多模态Embedding
  4. JavaScript是如何工作的:事件循环和异步编程的崛起+ 5种使用 async/await 更好地编码方式!...
  5. Nginx伪静态配置和常用Rewrite伪静态规则
  6. 分享怎样自己做网站赚钱年入40万
  7. quicktime ogv_Windows的QuickTime已死,应卸载以确保安全
  8. 浅谈选择示波器时的“5倍法则”
  9. 1023: 大小写转换 ZZULIOJ
  10. 拓嘉启远电商:拼多多店铺访客少怎样解决
  11. basic4android计算器,vb三角函数计算器代码
  12. 使用 Neo4j 图数据库可视化(网络安全)知识图谱
  13. word中插入图片只显示底边,其他看不到,插入公式显示不全
  14. JavaScript到底算不算函数式编程语言?
  15. 2019年十大创新产品
  16. FAPI专题-3:5G nFAPI接口 - 中文规范-3- 协议栈、消息格式
  17. 随风杂谈(长期更新)
  18. 总:基于FPGA的OV7670摄像头显示
  19. 多边形轮廓 等距离外扩
  20. Matlab中矩阵的平方和矩阵中每个元素的平方

热门文章

  1. 《Android游戏开发详解》一2.9 类
  2. 3.0 Android组件之间的信使Intent
  3. 我是主考官:给一位应届毕业生的回信
  4. 纯 js 让浏览器不缓存 ajax 请求
  5. 关于垃圾回收,我来解释下为什么LocalConnection可以实现垃圾回收
  6. 物联网:发动一场生态系革命
  7. 手动编译cloudfoundry
  8. perl的几个小tips
  9. JavaScript设计模式 单例模式
  10. redirect与forward跳转的区别