成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

記一次數據分析的全過程

運維 數據庫運維
剛下完班的時候,在公司無聊的坐著,一位同事拿了一些數據給我,說讓我實現一個類似交叉表格的統計報表。我原以為是最多十幾分鐘就搞定的事情,沒想到花了2個小時,所以印象比較深,就把全過程記錄了下來。

剛下完班的時候,在公司無聊的坐著,一位同事拿了一些數據給我,說讓我實現一個類似交叉表格的統計報表。

我原以為是最多十幾分鐘就搞定的事情,沒想到花了2個小時,所以印象比較深,就把全過程記錄了下來

源數據就是個日志文本信息

  1. 2008/1/11               02:14:33:181           181          00001c68                SeqID       418370    ToBack()=TRUE       Len=154  MsgID=x00000202                  
  2.  
  3. 2008/1/11               02:14:33:181           181          00001c68                SeqID       418370    ToFront()=TRUE      Len=260  MsgID=x08000202                BEIP=192.168.1.162                BEPort=22049 
  4.  
  5. 2008/1/11               03:05:42:330           330          00004110                SeqID       418370    ToBack()=TRUE       Len=154  MsgID=x00000202                  
  6.  
  7. 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類型不支持毫秒運算,第一個問題出來了,依賴于日志中已有的毫秒進行上下文計算又有一定的問題。

先統計了再說吧

  1. select b.hours, 
  2. case when overlap<10 then '<10ms' 
  3.      when overlap<20 then '10-20' 
  4.      when overlap<30 then '20-30' 
  5.      when overlap<40 then '30-40' 
  6.      when overlap<50 then '40-50' 
  7.      when overlap<60 then '50-60'       
  8.      when overlap<70 then '60-70' 
  9.      when overlap<80 then '70-80' 
  10.      when overlap<90 then '80-90'   
  11.      else '>90ms' 
  12. end tt, 
  13. count(*) 
  14. from 
  15. select a.f,a.d from 
  16. select k,a,b,f,d,g,c, 
  17.        LAG(c, 1, 0) OVER (partition by f,dORDER BY B,g) lastc, 
  18.        LAG(b, 1, 0) OVER (partition by f,dORDER BY B,g) lastb, 
  19.        case when c - LAG(c, 1, 0) OVER (ORDER BY tt)>=0 then c - LAG(c, 1, 0) OVER (ORDER BY tt) 
  20.         else  c - LAG(c, 1, 0) OVER (ORDER BY tt)+1000 end aa 
  21.   fromtest6 t  
  22. ) a 
  23. where a.g='ToFront()=TRUE' anda.aa>90 ) 
  24. order by f,d,b,g 
  25. ) b 
  26. group by b.hours, 
  27. case when overlap<10 then '<10ms' 
  28.      when overlap<20 then '10-20' 
  29.      when overlap<30 then '20-30' 
  30.      when overlap<40 then '30-40' 
  31.      when overlap<50 then '40-50' 
  32.      when overlap<60 then '50-60'       
  33.      when overlap<70 then '60-70' 
  34.      when overlap<80 then '70-80' 
  35.      when overlap<90 then '80-90'   
  36.      else '>90ms' 
  37. end 

結果統計出來了,結果非預期的,又對幾條數據進行了統計和明細的對比,發現確實有些小問題,可問題出在哪里,也說不清楚。

為了解釋清楚這個問題,還是對數據加上行號吧,再次進行對比,發現數據的位置變化了,和原本的日志順序是不一樣的。

為了解決這個問題,還是用rownum加上表數據生成到另外一張測試表吧,再去看看行號和日志的順序是否能夠對應,卻發現日志的插入順序和行號是不一致的!

又問了下同事,業務邏輯到底是怎樣的,答曰:日志中上下文的順序是很嚴格的

看來需要徹底解決行號問題了。

又在Excel中做了一下測試,Excel做測試很容易,先獲取上條記錄的毫秒信息,再進行排序,再把數據進行篩選,然后再進行分組判斷,最后進行交叉表的生成。

對應大數據量來說,Excel的拖拉顯然就滿了很多,其次還需要函數、排序、復制數據,總的來說還是比較耗時的。

  1. create or replace trigger trigger_test6 
  2.   before insert on test6  
  3.   for each row 
  4. declare 
  5. begin 
  6.   select tt.nextval into :new.tt from dual; 
  7. end trigger_test6; 

再去驗證數據的順序,這次才算正常了

數據正常了,業務邏輯就簡單多了,只需要把最內核的部分修改一下,按行號排序即可

  1. select rr,k,a,b,f,d,g,c, 
  2.        LAG(c, 1, 0) OVER (ORDER BY tt)lastc, 
  3.        LAG(b, 1, 0) OVER (ORDER BY tt)lastb      
  4.   from test6 t  

統計完成后,再拷貝到Excel中進行數據透視表轉換,再把表格數據拷貝出來,加一些美觀信息即可。

該件事情還是沒有得到完美解決

主要是毫秒的處理,理論上是時間的直接相減即可,可由于Oracle的date類型無法直接處理,只能采用日志中的毫秒字段進行相減了,碰到相減為負的,則再加回來1000,多少有些問題。

再其次,oracle導入時的數據順序有問題,不過我想也許是我自己還沒找解決問題的根本原因吧。

【編輯推薦】

  1. 淺析數據倉庫設備趨勢:聚焦BI,細分市場
  2. 加快數據倉庫加載無需添加硬件的解決方法
  3. SQL Server數據挖掘之理解聚類算法和順序聚類算法
  4. SQL Server數據挖掘中的幾個問題之理解列的用法
  5. SQL Server數據挖掘中的幾個問題之理解內容類型

 

 

責任編輯:艾婧 來源: baoqiangwang的博客
相關推薦

2019-06-11 09:23:38

2021-02-11 14:06:38

Linux內核內存

2012-11-06 10:19:18

Java自定義加載Java類

2025-05-15 10:01:22

HBase數據壓縮大數據

2011-04-18 15:56:10

軟件測試

2011-02-22 10:46:02

Samba配置

2021-10-14 10:53:20

數據庫查詢超時

2017-09-22 10:16:16

MySQL數據庫用戶數據

2023-10-10 12:05:45

2017-12-19 14:00:16

數據庫MySQL死鎖排查

2019-08-26 09:50:09

2011-09-06 15:38:20

QT安裝

2009-04-13 12:37:18

2011-01-21 17:51:52

2009-12-08 17:56:16

WCF配置

2020-04-08 16:14:50

Python數據可視化

2024-08-27 08:00:00

2021-11-23 21:21:07

線上排查服務

2021-08-19 09:50:53

Java內存泄漏

2021-01-08 13:52:15

Consul微服務服務注冊中心
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美片网站免费 | 日韩国产免费 | 在线观看黄免费 | 欧美成人一级 | 国产成人精品午夜视频免费 | 欧美乱人伦视频 | 亚洲精品麻豆 | 久久久高清 | 亚洲国产成人av好男人在线观看 | 久久久久国产一区二区三区四区 | 天堂在线一区 | 久久久久久久久综合 | 国产精品久久久久久久久久久久久久 | av在线成人 | 国产日韩视频在线 | 免费午夜视频在线观看 | 久久国产成人精品国产成人亚洲 | 成人午夜免费福利视频 | 日本中文字幕一区 | 中文字幕在线一区二区三区 | 日韩精品一区二区三区高清免费 | 日韩免费视频 | 欧美一级视频免费看 | 永久av | 日韩伦理一区二区 | 日韩精品视频在线观看一区二区三区 | 国产区高清 | 久久久精品 | 亚洲精品一区二区三区 | japan25hdxxxx日本 做a的各种视频 | 视频三区| 特级a欧美做爰片毛片 | 国产成人精品免费视频大全最热 | 国内av在线| 91精品久久久久久久久 | 精品国产91亚洲一区二区三区www | 欧美一区二区三区的 | 韩日精品一区 | 欧美一二三 | 国产日产精品一区二区三区四区 | 国产精品一区二区久久久久 |