마크베이스 사용방법


마크베이스 5.0 : Tutorial 2 (Batch Loading : Many Sensors)

작성자
machbase
작성일
2018-08-17 16:58
조회
289

마크베이스 5.0 센서데이터 : 두번째 Tutorial


다수(18개)의 센서 데이터를 한꺼번에 (Batch)로 로딩하고, Tag Analyzer로 확인하는 것을 실습해 본다.


특히 이 문서에서는 입력되는 센서의 구조가 PLC 형태의 가로로 센서 데이터가 입력된 형태이고, 이를 Tag Table에 로딩해서 실제로 분석할 수 있도록 하는 것을 보여준다.


두번째 튜토리얼 수행하기


튜토리얼 개요



 


테스트 디렉토리 확인


두번째 디렉토리인 edu_2_pc 에는 좀 더 큰 파일들이 아래와 같이 있으며, 각각의 설명은 다음과 같다.


Host:~/work/MyTutorial$ cd edu_2_plc
Host:~/work/MyTutorial/edu_2_plc$ ls -al
합계 363700
drwxrwxr-x 2 sjkim2 sjkim2 4096 8월 14 18:37 .
drwxrwxr-x 6 sjkim2 sjkim2 4096 8월 14 18:35 ..
-rw-rw-r-- 1 sjkim2 sjkim2 107 8월 14 18:35 1_create_tag.sql # Tag 테이블 생성
-rw-rw-r-- 1 sjkim2 sjkim2 32 8월 14 18:35 2_load_meta.sh # Tag Meta 로딩
-rw-rw-r-- 1 sjkim2 sjkim2 162 8월 14 18:35 2_tag_meta.csv # Tag Meta 의 실제 데이터
-rw-rw-r-- 1 sjkim2 sjkim2 263 8월 14 18:35 3_create_plc_tag_table.sql # PLC 구조를 로딩할 Log Table 생성
-rw-rw-r-- 1 sjkim2 sjkim2 372389876 8월 14 18:35 4_plc_tag.csv # 실제 센서 데이터
-rw-rw-r-- 1 sjkim2 sjkim2 96 8월 14 18:35 4_plc_tag_load.sh # 로딩된 센서 데이터를 Tag Table로 옮기는 스크립트
-rw-rw-r-- 1 sjkim2 sjkim2 1123 8월 14 18:35 5_plc_to_tag.sql # 로딩된 센서 데이터를 Tag Table로 옮기는 SQL
Host:~/work/MyTutorial/edu_2_plc$

태그 테이블 생성 및 태그 메타 로딩


태그 테이블 생성은 첫 번째 튜토리얼과 같다.


그러나 태그 메타 정보는 insert into 구문이 아니라, tagmetaimport 라는 도구를 이용해서 한꺼번에 로딩 하는 것을 예로 들었다.


로딩을 편하게 하기 위해서 주로 태그 메타 정보는 엑셀과 같은 곳에서 관리되어 주로 CSV 형태로 존재하기 때문이다.


예제에서는 간단하게 17개의 태그 메타의 이름을 CSV 파일에 넣어 두었다.


# 태그 테이블 생성
Mach> create tagdata table tag (name varchar(32) primary key, time datetime basetime, value double summarized);
Executed successfully.
Elapsed time: 2.947
Mach>

# 태그 메타 CSV 파일 확인
Host:~/work/MyTutorial/edu_2_plc$ cat 2_tag_meta.csv
MTAG_V00
MTAG_V01
MTAG_C00
MTAG_C01
MTAG_C02
MTAG_C03
MTAG_C04
MTAG_C05
MTAG_C06
MTAG_C07
MTAG_C08
MTAG_C09
MTAG_C10
MTAG_C11
MTAG_C12
MTAG_C13
MTAG_C14
MTAG_C15
Host:~/work/MyTutorial/edu_2_plc$

# 태그 메타 로딩
Host:~/work/MyTutorial/edu_2_plc$ tagmetaimport -d 2_tag_meta.csv
Import time : 0 hour 0 min 0.05 sec
Load success count : 18
Load fail count : 0
Host:~/work/MyTutorial/edu_2_plc$

# 태그 메타 로딩 여부 확인
Mach> select * from _tag_meta;
ID NAME
----------------------------------------------------------
1 MTAG_V00
2 MTAG_V01
3 MTAG_C00
4 MTAG_C01
5 MTAG_C02
6 MTAG_C03
7 MTAG_C04
8 MTAG_C05
9 MTAG_C06
10 MTAG_C07
11 MTAG_C08
12 MTAG_C09
13 MTAG_C10
14 MTAG_C11
15 MTAG_C12
16 MTAG_C13
17 MTAG_C14
18 MTAG_C15
[18] row(s) selected.
Elapsed time: 0.001
Mach>
위와 같이 성공적으로 태그 메타 정보(이름) 18개가 로딩되었다.

PLC 데이터 로딩을 위한 테이블 생성


아래와 같이 3_create_plc_tag_table.sql 을 수행하면 다음과 같은 로그 테이블이 생성된다.


Mach> create table plc_tag_table(
tm datetime,
V0 DOUBLE ,
V1 DOUBLE ,
C0 DOUBLE ,
C1 DOUBLE ,
C2 DOUBLE ,
C3 DOUBLE ,
C4 DOUBLE ,
C5 DOUBLE,
C6 DOUBLE ,
C7 DOUBLE ,
C8 DOUBLE ,
C9 DOUBLE ,
C10 DOUBLE ,
C11 DOUBLE ,
C12 DOUBLE ,
C13 DOUBLE ,
C14 DOUBLE ,
C15 DOUBLE
);
Created successfully.
Elapsed time: 0.045
sjkim2@andrew-Precision-T1700:~/work/MyTutorial/edu_2_plc$

PLC 데이터 로딩


CSV 데이터 확인


위의 plc_tag_table 테이블에 아래 4_plc_tag.csv의 데이터 200만 라인이 PLC 입력 형태로 입력된다.


2009-01-28 07:03:34 0:000:000, 0.00, 0.00, -41.98, 2067.64, -37.13, 2.28, 8.63, -26.62, -8.46, -0.33, 3437.73, 2728.14, 4054.03, 4007.89, 4478.27, 5056.98, 3639.09, 3128.49
2009-01-28 07:03:34 1:000:000, 0.00, 0.00, -46.50, 2067.88, -28.56, 13.69, -12.35, -25.81, -5.04, -5.04, 3432.44, 2734.47, 4038.62, 4019.40, 4496.72, 5051.81, 3636.97, 3115.03
2009-01-28 07:03:34 2:000:000, 0.00, 0.00, -36.16, 2055.81, -10.89, 8.63, -2.93, -30.34, -9.27, -2.12, 3438.61, 2719.97, 4030.92, 4025.48, 4489.54, 5057.35, 3641.81, 3105.24
2009-01-28 07:03:34 3:000:000, 0.00, 0.00, -50.36, 2053.68, -31.96, -0.65, -8.29, -21.60, 7.98, 2.28, 3429.51, 2720.50, 4040.22, 4000.87, 4485.44, 5049.60, 3642.72, 3124.84
....................... 생략 ...
2009-01-28 12:36:58 17:000:000, 233.33, 0.00, 2258.82, 1792.25, 1373.99, 1552.78, 2295.62, 3307.05, 1756.83, 2178.15, 3387.37, 2709.18, 1077.86, 1049.76, 2294.15, 2273.27, 1357.59, 1194.32
2009-01-28 12:36:58 18:000:000, 233.33, 0.00, 2260.54, 1803.35, 1377.15, 1571.28, 2289.23, 3287.20, 1764.03, 2173.57, 3357.68, 2714.71, 1064.89, 1047.78, 2290.70, 2280.63, 1336.21, 1187.38
2009-01-28 12:36:58 19:000:000, 233.33, 0.00, 2251.00, 1789.54, 1375.46, 1558.21, 2313.37, 3287.20, 1749.18, 2169.47, 3378.92, 2714.71, 1087.65, 1070.07, 2295.62, 2272.29, 1332.24, 1182.29
2009-01-28 12:36:58 20:000:000, 233.33, 0.00, 2255.64, 1791.35, 1378.41, 1548.66, 2305.47, 3305.90, 1771.24, 2177.43, 3367.27, 2701.04, 1069.07, 1054.14, 2301.04, 2279.16, 1346.47, 1199.83

처음 칼럼에 시간이 나오고, 순서대로 V0, V1, ...C15까지 칼럼이 나뉘어져 있다.


데이터의 패턴은 1초에 0~99 mili second 까지 약 100개의 데이터가 입력되고, 100 mili second에서 999까지는 입력이 없다가 다음 1초동안 동일한 패턴으로 입력되는 것이다.


로딩 수행


튜토리얼에 4_plc_tag_load.sh 파일이 존재하며 이를 수행하면 아래와 같이  200만 건의 원시 PLC 데이터가 입력된다.


Host:~/work/MyTutorial/edu_2_plc$ cat 4_plc_tag_load.sh
machloader -t plc_tag_table -i -H -d 4_plc_tag.csv -F "tm YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn"

Host:~/work/MyTutorial/edu_2_plc$ machloader -t plc_tag_table -i -d 4_plc_tag.csv -F "tm YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn"
-----------------------------------------------------------------
Machbase Data Import/Export Utility.
Release Version 5.0.2.community
Copyright 2014, MACHBASE Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
NLS : US7ASCII EXECUTE MODE : IMPORT
TARGET TABLE : plc_tag_table DATA FILE : 4_plc_tag.csv
IMPORT_MODE : APPEND FILED TERM : ,
ROW TERM :
ENCLOSURE : "
ESCAPE : " ARRIVAL_TIME : FALSE
ENCODING : NONE HEADER : FALSE
CREATE TABLE : FALSE

Progress bar Imported records Error records
2000000 0

Import time : 0 hour 0 min 12.400 sec
Load success count : 2000000
Load fail count : 0

sjkim2@andrew-Precision-T1700:~/work/MyTutorial/edu_2_plc$ vi 4_plc_tag_load.sh

이제 태그 테이블을 활용할 모든 준비가 완료되었다.


태그 테이블 데이터 로딩


태그 테이블에 데이터를 넣어서 실제로 Tag Analyzer를 통해서 데이터를 확인할 수 있도록 한다.


이를 위해서 plc_tag_table 의 정보를 모두 Tag 테이블에 넣어야 하는데, 이를 위해서 insert-select 구문을 이용해서 Bulk로 넣는다.


그리고 각 칼럼의 값이 모든 태그 테이블의 이름과 매핑이 되어야 하기 때문에 다음과 같이 매타 태그의 이름 정보와 일치시킨다.


이름 변환 규칙



컬러명

태그 테이블의 Name 컬럼에 입력되는 이름

V0 MTAG_V00
V1 MTAG_V01
C0 MTAG_C00
C1 MTAG_C01
...  
C15 MTAG_C15

데이터 로딩


미리 준비된 파일인 5_plc_to_tag.sql 을 수행하면 하나씩 순차적으로 Tag 테이블에 넣는다.


insert into tag select 'MTAG_V00', tm, v0 from plc_tag_table;
insert into tag select 'MTAG_V01', tm, v1 from plc_tag_table;
insert into tag select 'MTAG_C00', tm, c0 from plc_tag_table;
insert into tag select 'MTAG_C01', tm, c1 from plc_tag_table;
insert into tag select 'MTAG_C02', tm, c2 from plc_tag_table;
insert into tag select 'MTAG_C03', tm, c3 from plc_tag_table;
insert into tag select 'MTAG_C04', tm, c4 from plc_tag_table;
insert into tag select 'MTAG_C05', tm, c5 from plc_tag_table;
insert into tag select 'MTAG_C06', tm, c6 from plc_tag_table;
insert into tag select 'MTAG_C07', tm, c7 from plc_tag_table;
insert into tag select 'MTAG_C08', tm, c8 from plc_tag_table;
insert into tag select 'MTAG_C09', tm, c9 from plc_tag_table;
insert into tag select 'MTAG_C10', tm, c10 from plc_tag_table;
insert into tag select 'MTAG_C11', tm, c11 from plc_tag_table;
insert into tag select 'MTAG_C12', tm, c12 from plc_tag_table;
insert into tag select 'MTAG_C13', tm, c13 from plc_tag_table;
insert into tag select 'MTAG_C14', tm, c14 from plc_tag_table;
insert into tag select 'MTAG_C15', tm, c15 from plc_tag_table;

아래와 같이 수행한다.


sjkim2@andrew-Precision-T1700:~/work/MyTutorial/edu_2_plc$ machsql -f 5_plc_to_tag.sql
=================================================================
Machbase Client Query Utility
Release Version 5.0.2.community
Copyright 2014 MACHBASE Corporation or its subsidiaries.
All Rights Reserved.
=================================================================
MACHBASE_CONNECT_MODE=INET, PORT=5656
Type 'help' to display a list of available commands.
Mach> insert into tag select 'MTAG_V00', tm, v0 from plc_tag_table;
2877176 row(s) inserted.
Elapsed time: 3.016
Mach> insert into tag select 'MTAG_V01', tm, v1 from plc_tag_table;
2877176 row(s) inserted.
Elapsed time: 2.982
....
Mach> insert into tag select 'MTAG_C15', tm, c15 from plc_tag_table;
2877176 row(s) inserted.
Elapsed time: 6.610

마크베이스가 즉시 백그라운드에서 Rollup 및 인덱스를 구축하게 되며, 잠시 후면 모든 준비 작업이 완료될 것이다.


Tag Analyzer를 통한 데이터 시각화


이제 로딩된 18개의 센서에 대해 확인을 하도록 하자.




 


http://www.machbase.com/download


Contact the Machbase team with your questions!
info@machbase.com

전체 24
번호 제목 작성자 작성일 추천 조회
24
마크베이스 V5 : Tutorial 6 (RestAPI with curl)
machbase | 2018.09.18 | 추천 1 | 조회 261
machbase 2018.09.18 1 261
23
마크베이스(Machbase) Tag Analyzer 사용법
machbase | 2018.08.27 | 추천 1 | 조회 344
machbase 2018.08.27 1 344
22
마크베이스 5.0 : Tutorial 4 (실제 데이터를 통한 Tag Analyzer 기초 활용)
machbase | 2018.08.27 | 추천 1 | 조회 233
machbase 2018.08.27 1 233
21
마크베이스 5.0 : Tutorial 5 (Tag Table with RestAPI)
machbase | 2018.08.24 | 추천 0 | 조회 242
machbase 2018.08.24 0 242
20
Machbase 5.0 : 센서데이터 홍수의 유일한 해결책
machbase | 2018.08.21 | 추천 0 | 조회 497
machbase 2018.08.21 0 497
19
마크베이스 5.0 : Tutorial 3 (Real Time Stream Insert : Many Sensors)
machbase | 2018.08.20 | 추천 0 | 조회 345
machbase 2018.08.20 0 345
18
마크베이스 5.0 : Tutorial 2 (Batch Loading : Many Sensors)
machbase | 2018.08.17 | 추천 0 | 조회 289
machbase 2018.08.17 0 289
17
마크베이스 5.0 : Tutorial 1 (Quick Start)
machbase | 2018.08.17 | 추천 0 | 조회 526
machbase 2018.08.17 0 526
16
마크베이스 5.0
machbase | 2018.08.16 | 추천 1 | 조회 598
machbase 2018.08.16 1 598
15
Machbase 5.0 TAG Table 사용법
machbase | 2018.08.10 | 추천 1 | 조회 371
machbase 2018.08.10 1 371