Skip to menu

샤이니 앱에서 SQL 명령어를 사용할 수 있는 패키지가 있어서 내용을 정리해봅니다.


-------------------------------------------------------------------------------------------------------------------------

CPU.txt

"app" "usr"

"1" "shiny-server/Hello" 4

"2" "shiny-server/Monitor" 4

-------------------------------------------------------------------------------------------------------------------------

샤이니 서버에서 돌아가고 있는 샤이니 앱들의 이름과 접속자 수가 TXT 파일에
저장되어 있으면 CPU <- read.table("/srv/shiny-server/Data/CPU.txt") 명령어로 
샤이니 앱 내부에서 테이블 변수로 불러와 사용할 수 있습니다. 


CPU 테이블 변수

 

"app" 

"usr" 

"1" 

 "shiny-server/Monitor"

 1

"2"

 "shiny-server/Hello"

 1

 


 

테이블 변수에서 "shiny-server/Monitor"는 모니터링 샤이니 앱이므로 테이블에서 제외하여야 합니다.

app열의 이름이 "shiny-server/Monitor"일 경우 제외하는 것인데 R 기본 명령어로는 하기가 좀 힘듭니다.

SQL 명령어를 사용하면 "SELECT * FROM CPU WHERE app != 'shiny-server/Monitor'"으로 쉽게 가능

한데 sqldf 패키지를 사용하면 해당 SQL 명령어를 샤이니 앱 안에서 사용할 수 있습니다. 


sqldf 패키지를 사용하기 위해 리눅스 터미널에서 sudo -i shiny으로 현재 사용자를 shiny으로 변경하고 R을 칩니다.

사용자를 변경하지 않으면 패키지를 설치해도 해당 패키지가 샤이니 앱에 적용되지 않습니다.

install.packages("sqldf")으로 패키지를 설치하면 샤이니 앱에서 SQL 명령어를 사용할 수 있습니다.


샤이니 앱의 server.R 맨 위에 library(sqldf)을 추가하여 패키지 사용을 명시합니다.

CPU <- read.table("/srv/shiny-server/Data/CPU.txt")으로 테이블 변수를 생성합니다.

CPU <- sqldf("SELECT * FROM CPU WHERE app != 'shiny-server/Monitor'")으로 SQL 명령어를 실행합니다.


수정된 CPU 테이블 변수

 

"app" 

"usr" 

"2"

 "shiny-server/Hello"
 1