Grafana 대시보드에 TimeSeries 없이 그래프 그리기
Grafana는 시계열 데이터에 대한 대시보드를 제공하는 오픈소스 툴이다.
DB와 연결하여 시각화할 수 있으며 실시간으로 업데이트되는 데이터를 반영하기도 좋다.
그래서 서버 리소스나 로그데이터를 많이 시각화하는 듯 하다.
반대로 말하면 Timestamp가 없으면 그래프를 못 그린다 ㅡㅡ
구글에 grafana line graph without time series 라는 검색어가 자동완성되니 말 다 함.
stackoverflow나 grafana 커뮤니티에도 왜 X축이 시간이어야만 함!?하는 불만의 글이 좀 보이던데
여~전히 비 시계열 데이터로는 기능을 지원하는 게 없는 듯 함...
그래도 그래프는 만들어져야 한다 ㄱ=
그래서 꼼수로 가짜 시간 데이터를 만드는 방법을 사용한다.
일단 내 데이터는 이런 모양이다.
| No | A | B |
| 0 | 20 | 98 |
| 1 | 21 | 80 |
| 2 | 25 | 91 |
이 데이터는 Time series가 없이 index열만 있다.
당연히 grafana를 이용해서 그래프로 표현할 수가 없다.
그러니 DB에서 데이터를 가져올 때 쿼리에 직접! SQL문을 작성해서 시계열을 만들도록 하자.
grafana의 Explore 메뉴에서 데이터를 시각화해볼 수 있다. (대시보드 패널에서 하는 거랑 같음)
기본 쿼리창 오른쪽 위의 연필 모양을 눌러 직접 SQL문을 작성하자

SELECT
DATE_ADD(STR_TO_DATE('2020-01-01', '%Y-%m-%d %H:%i:%s'), INTERVAL DB.Table.No minute) as time_sec, A, B
FROM DB.Table
ORDER BY No
대충 코드를 설명하자면
임의의 날짜 2020-01-01을 지정하고 숫자 인덱스인 No컬럼을 분으로 취급해서
저 임의의 날짜로부터 +No분씩 되는 폰시계열 컬럼을 만든 것이다.
그걸 As time_sec으로 grafana가 시계열로 받게끔 하면 끝.
그럼 쿼리문 밑에 이런 그래프와 폰시계열이 추가된 테이블이 만들어진다

혹시 그래프 축은 뜨는데 내용물이 안 보인다면
맨 상단 우측에 있는 시계 모양 아이콘으로 그래프가 2020-01-01 을 띄울 수 있게 조정해주자.
또한 데이터의 행이 많은 등의 이유로 +1분씩 하다가 현재 시간 이후를 넘어가는 경우엔 볼 수 없으니
적당히 임의의 날짜를 더 과거로 하거나 No로 더할 단위를 초로 바꿔서 조정하자.
정말 왜 이렇게 시간에 집착하는지 모르겠다...
참고한 영상 https://www.youtube.com/watch?v=Bu-MxNJT44c
영상에선 Time 컬럼에 NOW()을 이용해 같은 시간인 데이터를 전부 한 항목으로 만드는 방법으로 사용했다.