dev/프로그래밍

서버별 ElapsedTime 그래프로 그리기(feat : ggplot2)

jeongsu 2019. 12. 31. 17:37

서버별로 메시지 수행시간을 그래프로 그리려고 한다.

 

우선 데이터는 

 

아래 사진과 같이 

//서버 이름 // 메시지 이벤트 이름// 이벤트 끝난시간// 메시지 수행시간// 이벤트 처리 결과

의 컬럼으로 이루어져 있다.

 

데이터 포맷

 

이제 위의 데이터를 각각의 서버별로 그래프를 그리려고 한다.

 

내가 원하는 그래프는 다음 사진과 같다.

 

내가 원하는 그래프 결과

 

 

#install.packages("rJava") 
#install.packages("DBI") 
#install.packages("RJDBC") 

#install.packages("ggplot2") 


library(DBI) 

library(rJava) 

library(RJDBC) 

library('ggplot2') 

drv<-JDBC("oracle.jdbc.driver.OracleDriver","D:\\app\\ParkJeongSu\\product\\11.2.0\\dbhome_2\\jdbc\\lib\\ojdbc6.jar") 

conn<-dbConnect(drv, " URL "," 아이디 "," 패스워드 ") 

query<-  
  " 
SELECT A.SERVERNAME, 
       A.EVENTNAME, 
       TO_DATE (SUBSTR (A.TIMEKEY, 0, 14), 'YYYYMMDDHH24MISS') TIME, 
       A.TIMEKEY, 
       A.ELAPSEDTIME, 
       A.RESULT 
  FROM CT_TRANSACTIONLOG A 
 WHERE     1 = 1 
       AND A.TIMEKEY BETWEEN '201912230000' AND '201912232399' 
       AND A.SERVERNAME LIKE 'PEXsvrPEXsvr%' 

" 

result <- dbGetQuery(conn,query) 

head(result2) 

all_graph<- ggplot(data=result,aes(x=TIMEKEY,y=ELAPSEDTIME,group=SERVERNAME,color=SERVERNAME)) + geom_line() + theme(axis.text.x = element_blank()) 

print(all_graph) 

facet_graph<- ggplot(data=result,aes(x=TIMEKEY,y=ELAPSEDTIME,group=SERVERNAME,color=SERVERNAME)) + geom_line() + facet_wrap(~ SERVERNAME) + theme(axis.text.x = element_blank()) 

print(facet_graph) 


 

패키지 설치가 필요한경우 아래의 "#" 주석 해제 후 ctrl + Enter 

#install.packages("rJava")
#install.packages("DBI")
#install.packages("RJDBC")
#install.packages("ggplot2")

 

Library 를 이제 불러오고

library(DBI)
library(rJava)
library(RJDBC)
library('ggplot2')

 

db 접속하고,

drv<-JDBC("oracle.jdbc.driver.OracleDriver","D:\\app\\ParkJeongSu\\product\\11.2.0\\dbhome_2\\jdbc\\lib\\ojdbc6.jar")
conn<-dbConnect(drv, " URL "," 아이디 "," 패스워드 ")

 

쿼리 결과를 result에 저장한다.

query<- 
  "
SELECT A.SERVERNAME,
       A.EVENTNAME,
       TO_DATE (SUBSTR (A.TIMEKEY, 0, 14), 'YYYYMMDDHH24MISS') TIME,
       A.TIMEKEY,
       A.ELAPSEDTIME,
       A.RESULT
  FROM CT_TRANSACTIONLOG A
 WHERE     1 = 1
       AND A.TIMEKEY BETWEEN '201912230000' AND '201912232399'
       AND A.SERVERNAME LIKE 'PEXsvrPEXsvr%'

"

result <- dbGetQuery(conn,query)

 

 

그래프 결과를 facet_graph에 저장하고,

facet_graph<- ggplot(data=result,aes(x=TIMEKEY,y=ELAPSEDTIME,group=SERVERNAME,color=SERVERNAME)) + geom_line() + facet_wrap(~ SERVERNAME) + theme(axis.text.x = element_blank())

 

그래프를 보여준다.

print(facet_graph)

 

 

데이터 55만 건을 조회하는데 30초가 걸렸고,

 

데이터 55만건을 그래프로 그리는데 40분이 걸렸다.