Posting

Machbase의 최신 소식을 지금 만나보세요

[MACHBASE 시각화] TAG analyzer – 이중 Y축

Tag Analyzer 사용법 : Sum과 Avg를 하나의 차트에 그리기 (이중 Y축 사용)

개요

이해를 돕기위하여 제목을 Sum과 Avg를 하나의 Chart에 그리기라고 정했을 뿐이고, 실제 설명할 내용은 차이가 많이 나는 데이터를 하나의 차트에 그리는 방법이다.
예를 들면 태풍의 경우 중심기압과 풍속은 상관관계가 크므로 하나의 차트에 그리는 경우가 많다.
하지만 기압과 풍속은 값의 차이가 크기때문에 그냥 하나의 차트에 그리면 2줄의 직선이 그려진다. 이런 경우에 사용하는 기능이 Y축을 하나 추가해서 차트를 그리는 것이다.

자료준비

태풍의 중심기압과 풍속 데이터는 구하기 쉽지 않지만 기상관측 데이터는 기상자료개발포털을 이용하면 쉽게 구할 수 있다.
https://data.kma.go.kr/data/grnd/selectAwsRltmList.do?pgmNo=56
이곳에서 얼마 전에 발생한 태풍 타파(TAPAH)의 자료를 얻기위하여 9/21 ~ 9/23 사이의 태풍센터(제주도 소재) 측정값을 다운로드한다.

주의할 점은 한번에 1일치의 자료만 선택이 가능하고, 로그인하지 않으면 10건밖에 다운로드가 되지 않는다는 점이다.
다운받은 자료를 하나로 합친 다음 Tag 테이블로 load하면 되는데 자료의 절대량이 많은 것이 아니라서 간단히 Python으로 append하는 프로그램을 제작했다.

init.sh와 append.sh를 실행해서 자료를 Tag 테이블에 append한다.

[test_tech]$./init.sh
=================================================================
     Machbase Client Query Utility
     Release Version - 5.7.0.official
     Copyright 2014 MACHBASE Corporation or its subsidiaries.
     All Rights Reserved.
=================================================================
MACHBASE_CONNECT_MODE=INET, PORT=5659
Type 'help' to display a list of available commands.
Mach> create tagdata table tag (name varchar(20) primary key, time datetime basetime, value double summarized);
Executed successfully.
Elapsed time: 6.170
=================================================================
     Machbase Client Query Utility
     Release Version - 5.7.0.official
     Copyright 2014 MACHBASE Corporation or its subsidiaries.
     All Rights Reserved.
=================================================================
MACHBASE_CONNECT_MODE=INET, PORT=5659
Type 'help' to display a list of available commands.
Mach> insert into tag metadata values ('TEMPERATURE');
1 row(s) inserted.
Elapsed time: 0.001
Mach> insert into tag metadata values ('RAINFALL');
1 row(s) inserted.
Elapsed time: 0.000
Mach> insert into tag metadata values ('WINDSPEED');
1 row(s) inserted.
Elapsed time: 0.000
Mach> insert into tag metadata values ('PRESSURE_hPa');
1 row(s) inserted.
Elapsed time: 0.000
Mach> insert into tag metadata values ('PRESSURE_SEA');
1 row(s) inserted.
Elapsed time: 0.000
Mach> insert into tag metadata values ('HUMIDITY');
1 row(s) inserted.
Elapsed time: 0.000
[test_tech]$
[test_tech]$./append.sh
append open
append data... append Close (25920 records)
elapsed time : 0.826292991638 sec
successfully executed.
[test_tech]$

Tag는 아래와 같이 설정했다.

  • 온도 : TEMPERATURE
  • 강수량 : RAINFALL
  • 풍속 : WINDSPEED
  • 현지기압 : PRESSURE_hPa
  • 해면기압 : PRESSURE_SEA
  • 습도 : HUMIDITY

차트 그리기

먼저 해면기압(PRESSURE_SEA)과 풍속(WINDSPEED)를 각각 차트로 그려보면 다음과 같다.
[+] Panel을 누른 다음 원하는 Tag와 집계함수를 선택하면 된다.

해면기압은 최소값(min), 풍속은 최대값(max)를 사용해서 차트를 그렸다.

차트를 보면 해면기압의 범위는 990~1015이고 풍속의 범위는 0~25이다. 이때 두개의 Tag를 하나의 차트에 그리면 차트의 범위는 0~1015로 계산되어 그려지게 된다.
이렇게 되면 범위에 비해서 값의 변화가 너무 작기때문에 그래프를 보면 그냥 2개의 직선으로만 보이게 된다.

이중 Y축 사용

이런 경우 가장 일반적으로 사용하는 방법이 Y축을 하나 더 사용하는 방법이다.

차트의 우측 상단에 있는 ‘edit options’ 버튼(톱니바퀴 모양의 아이콘)을 눌러서 차트 설정 화면으로 이동한다.
‘Axes’탭을 선택하고 ‘Set additional Y-axis.’를 체크한다.

‘Select tags for Y-axis 2.’ 항목에서 별도의 축을 사용할 Series들을 선택해 주면 된다.

  • ‘Show tick line’은 눈금에 맞추어 차트 내부에 그려지는 Grid line을 보여줄 지 결정한다.
  • ‘Position of Y-axis’는 추가된 Y축이 그려지는 위치를 결정한다.

설정 Panel의 우측상단에 있는 ‘apply changes’ 버튼(붉은색 체크 모양)을 누르면 변경된 내용이 적용된다.
수정내용을 확인한 후 화면 우상단의 체크모양의 버튼을 눌러서 Dashboard로 돌아가면 아래와 같이 그려진 것을 볼 수 있다.

마우스를 좌/우의 Y축 숫자 위에 올리면 해당되는 Series가 굵게 표시되고, 클릭하면 해당 Series들만 볼 수 있다.

마무리

이중 Y축의 예로 쓸만한 것을 찾다가 태풍이 온다는 뉴스를 보고 중심기압과 풍속이 예제로 적합한 것 같아서 자료를 찾아서 예제를 만들었다.
원래는 태풍의 중심기압과 풍속을 사용해야 하는 것으로 알고 있지만 자료를 구하기 힘들었다. 하지만 특정 지점의 관측자료로도 비슷한 모양은 나올 것 같아서 적용해 보았다.
이 기능은 비슷한 범위의 값을 사용하는 sensor들만 사용하는 경우에는 Sum/Count와 Avg/Min/Max를 하나의 차트에 보여주는 경우를 제외하고는 사용할 일이 없다.
하지만 예로 들은 경우와 같이 값의 차이가 심하게 나서 하나의 차트에 표현하기 곤란한 경우가 발생할 가능성은 항상 존재한다. 이런 경우 이중 Y축 기능이 그 해답 중의 하나가 될 수 있다.
문제는 2개보다 많은 Y축이 필요해지는 경우인데 이런 경우를 대비해서 Normalize 기능을 지원하기 위하여 준비 중이다.

연관 포스트

C언어로 Binary data를 Machbase에 넣기

1.개요 Data를 다루다 보면 numeric, varchar 형 데이터뿐만 아니라 JPG, PNG, MP3와 같은 Binary data도 database에 저장해야 할 때가 존재한다. 그러나 일반 data들과는 달리 Binary

[MACHBASE 연동] Android studio에서 JDBC 연결하기

마크베이스 기술지원본부 이현민 1. 개요 수많은 데이터들이 많은 환경에서 생성되고 있는 오늘날, 우리 현대인들의 동반자인 스마트폰 또한 데이터생성의 주체로써 또는 전달자로서 알게 모르게 그 구실을