X-SCADA AI > Database SQL을 활용한 Cartesian Product(카티션 곱) 활용

DB

X-SCADA AI > Database SQL을 활용한 Cartesian Product(카티션 곱) 활용

X-SCADA AI에서 Cartesian Product(카티션 곱, 데카르트 곱, 곱집합)을 활용하여 데이터의 소계, 총계 등을 표현할 수 있는 샘플을 준비했습니다.

다양한 방식으로 통계적인 표현이 가능하겠지만, 이번 샘플에서는 DB SQL만을 활용하여 표현할 수 있도록 했습니다.

샘플은 X-SCADA AI 최신 버전과 SQLite 데이터베이스를 활용하였습니다.




1. 데이터베이스 생성 및 설정하기

1) SQLite 데이터베이스 파일을 생성한다.

· 쉬운 접근 및 사용이 가능하도록 DB Browser for SQLite 툴을 활용했습니다. (해당 툴 사이트 이동(클릭시 이동))

9fd39f7ab15b809c183730ef5c603c22_1720687866_0544.png
 


2) 아래와 같이 테이블은 생성한다.

· power 테이블 : 소계(Sub Total), 합계(Total)에 사용할 원본 데이터를 저장할 테이블

9fd39f7ab15b809c183730ef5c603c22_1720687925_9589.png
 


3) 추가로 테이블을 1개 더 생성한다.

· T_COPY : 데이터 복사에 사용할 테이블

9fd39f7ab15b809c183730ef5c603c22_1720687930_6935.png
 


4) 빠른 데이터 삽입을 위해 첨부한 csv 파일을 활용하여 power 테이블에 데이터를 삽입한다.

· DB Browser for SQLite 기준, 상단 File > Import > Table from CSV file… 클릭

9fd39f7ab15b809c183730ef5c603c22_1720687936_2395.png
 


5) 생성된 팝업창에서 Table name을 power로 변경한 뒤 [확인(OK)]을 클릭한다.

9fd39f7ab15b809c183730ef5c603c22_1720687946_013.png
 


6) SQL 실행(Execute SQL) 창에서 아래와 같이 SQL 입력 후 실행(F5)시킨다.

9fd39f7ab15b809c183730ef5c603c22_1720687953_064.png 

 INSERT INTO T_COPY VALUES (1), (2), (3);





2. X-SCADA AI Designer 설정하기 

1) X-SCADA AI Designer > 데이터 소스(Data Sources) 에서 마우스 오른쪽 클릭 후 SQLite 추가(Add SQLite)를 클릭한 뒤 준비한 DB 파일을 추가한다.

· 현재 따라하기에서는 첨부한 파일 중 sample 파일을 다운로드 받아 활용했습니다.

9fd39f7ab15b809c183730ef5c603c22_1720687989_8005.png
 


2) 추가한 sqlite_1을 마우스 오른쪽 클릭한 뒤 SELECT SQL 추가(Add SELECT SQL)한 뒤 아래와 같이 SQL을 작성한다.

9fd39f7ab15b809c183730ef5c603c22_1720687995_8731.png 

SELECT

    DATETIME(DATETIME) AS DATETIME

    ,DEPT

    ,FLOOR

    ,VALUE

FROM POWER



3) sqlite_1을 한번 더 마우스 오른쪽 클릭한 뒤 SELECT SQL을 1개 더 생성한 뒤 아래와 같이 SQL을 작성한다.

9fd39f7ab15b809c183730ef5c603c22_1720688022_4426.png 

SELECT

A.DEPT

,A.FLOOR

,SUM(A.VALUE) AS VALUE

FROM (

SELECT

 B.IDX

,CASE WHEN B.IDX < 3 THEN A.DEPT

  ELSE '[Total]' END AS DEPT

,CASE WHEN B.IDX = 1 THEN A.FLOOR

  WHEN B.IDX = 2 THEN '[Sub Total]' 

  ELSE ' ' END AS FLOOR

,A.VALUE

FROM POWER A, T_COPY B

WHERE 1=1

AND B.IDX < 4

) A

GROUP BY A.DEPT , A.FLOOR



4) X-SCADA AI Designer > 디자인 화면에서 리스트뷰(ListView), 텍스트(Text) 등을 활용하여 작화한다.

9fd39f7ab15b809c183730ef5c603c22_1720688068_2703.png
 


5) 원시 데이터(Source Data) 항목의 리스트뷰(ListView)를 선택한 뒤 속성(Properties) > 바인딩(Binding) > 바인딩 조회 SQL(BindSelectSQL)에 sqlite_1.query_1을 바인딩한다.

· Binding SQL 이름 규칙 : DB명.SQL명 (sqlite_1.query_1, sqlite_1 폴더에 있는 query_1이라는 뜻 / 이름 사이에 점(.)으로 구분)

9fd39f7ab15b809c183730ef5c603c22_1720688074_9679.png
 


6) 속성(Properties) > 리스트뷰(ListView) > 열 설정(Columns)에서 4개의 열(Column)을 추가한 뒤 바인딩 필드(Binding Field) 등을 설정한다.

· Column 1 > Binding Field : DATETIME / Name : Time (시간)

· Column 2 > Binding Field : DEPT / Name : Building (건물)

· Column 3 > Binding Field : FLOOR / Name : Floor (층)

· Column 4 > Binding Field : VALUE / Name : Usage (사용량)

9fd39f7ab15b809c183730ef5c603c22_1720688081_0118.png
 


7) 결과 데이터(Result Data)에 있는 리스트뷰(ListView)도 마찬가지로 뒤 속성(Properties) > 바인딩(Binding) > 바인딩 조회 SQL(BindSelectSQL)에 sqlite_1.query_2를 바인딩한다.

9fd39f7ab15b809c183730ef5c603c22_1720688086_4914.png
 


8) 속성(Properties) > 리스트뷰(ListView) > 열 설정(Columns)에서 3개의 열(Column)을 추가한 뒤 바인딩 필드(Binding Field) 등을 설정한다.

· Column 1 > Binding Field : DEPT / Name : Building (건물)

· Column 2 > Binding Field : FLOOR / Name : Floor (층)

· Column 3 > Binding Field : VALUE / Name : Usage (사용량)

9fd39f7ab15b809c183730ef5c603c22_1720688093_9119.png
 



2. X-SCADA AI Viewer 설정하기

1) 프로젝트 저장 후 X-SCADA AI Viewer로 실행한 뒤 Result Data 항목에서 데이터 합을 잘 표현하는지 확인한다.

· 각 층(Floor) 별로 사용량 합계를 잘 표현하는지 확인한다.

· 건물(Building) 별로 소계(Sub Total)를 잘 표현하는지 확인한다.

· 총합계(Total)를 잘 표현하는지 확인한다.

9fd39f7ab15b809c183730ef5c603c22_1720688110_32.png
 


2) 첨부한 파일들을 다운로드 받아 직접 따라하거나 실행하여 설정을 확인할 수 있다.


0 Reply Comment
Title