데이터베이스로부터 시간 간격으로 수집 된 데이터가 있습니다. 메트릭은 계속 증가하는 것처럼 카운터입니다. 주어진 시간에 대한 메트릭 값을 얻으려면 같은 행의 이전 버전에서 한 행을 뺍니다.두 개의 다른 행에서 데이터를 뺍니다.
예 :
TS INST_ID EVENT WAIT_TIME_MILLI WAIT_COUNT
2014-01-29 17:20:36 1 log file sync 1 756873
2014-01-29 17:20:36 1 log file sync 2 15627
2014-01-29 17:20:36 1 log file sync 4 2925
2014-01-29 17:21:03 1 log file sync 1 761063
2014-01-29 17:21:03 1 log file sync 2 15659
2014-01-29 17:21:03 1 log file sync 4 2929
원하는 출력 :
TS INST_ID EVENT WAIT_TIME_MILLI WAIT_COUNT
2014-01-29 17:21:03 1 log file sync 1 4190
2014-01-29 17:21:03 1 log file sync 2 32
2014-01-29 17:21:03 1 log file sync 4 4
TS이 메트릭은 수집 된 시간이다. INST_ID, EVENT 및 WAIT_TIME_MILLI는 정적 식별자입니다. 하나의 TS에서 다음 TS로 WAIT_COUNT의 델타를 계산하려고합니다.
데이터를 약간 단순화했으나 중요한 경우 많은 이벤트가 있고 여러 INST_ID가 될 수 있습니다.
structure(list(TS = structure(c(1391034063.541, 1391034063.541,
1391034063.541, 1391034036.136, 1391034036.136, 1391034036.136
), class = c("POSIXct", "POSIXt")), INST_ID = c(1, 1, 1, 1, 1,
1), EVENT = c("log file sync", "log file sync", "log file sync",
"log file sync", "log file sync", "log file sync"), WAIT_TIME_MILLI = c(1,
2, 4, 1, 2, 4), WAIT_COUNT = c(761063, 15659, 2929, 756873, 15627,
2925)), .Names = c("TS", "INST_ID", "EVENT", "WAIT_TIME_MILLI",
"WAIT_COUNT"), class = "data.frame", row.names = c(NA, 6L))
참조'diff' 차이와'plyr' 설명서를 – mlt