Я хочу заставить диаграмму высокого чартера внутри блестящего приложения выводить новые данные из базы данных Mysql. Я пробовал разные подходы, но ни один из них не работает. Сначала я подключаюсь к SQL через библиотеку (RMySQL) и библиотеку (пул) в globalR
#--------Connect to SQL----------#
pool <- dbPool(
drv = RMySQL::MySQL(),
dbname = "xxx",
host = "x.x.x.x",
username = 'xxxx',
password = 'xxxx'
)
sql1 <- 'SELECT * FROM `results` WHERE `datetime` >= NOW() - INTERVAL 1 DAY'
query1 <- sqlInterpolate(pool, sql1)
notifier1 <- dbGetQuery(pool, sqlInterpolate(pool,'SELECT * FROM `results` WHERE `datetime` >= NOW() - INTERVAL 1 DAY' ))
lapply(dbListConnections( dbDriver( drv = "MySQL")), dbDisconnect)
, затем я создаю 2 кадра данных
all1 <- as.data.frame(notifier1%>% group_by(datetime, customer) %>% count(ping) %>% filter(datetime > Sys.time()-14400) %>%
mutate(percent = (round(100 * n/sum(n), 1))) %>% filter(ping=='1') %>% arrange(desc(datetime)))
all1_new <- transform(all1,datetime=as.numeric(as.POSIXct(datetime))*1000)
На сервере, который я пробовал:
server <- function(input, output, session) {
observeEvent(invalidateLater(60000, session),{
notifier1 <- dbGetQuery(pool, sqlInterpolate(pool,'SELECT * FROM `results` WHERE `datetime` >= NOW() - INTERVAL 1 DAY' ))
all1 <- as.data.frame(notifier1%>% group_by(datetime, customer) %>% count(ping) %>% filter(datetime > Sys.time()-14400) %>%
mutate(percent = (round(100 * n/sum(n), 1))) %>% filter(ping=='1') %>% arrange(desc(datetime)))
all1_new <- transform(all1,datetime= as.numeric(as.POSIXct(datetime))*1000)
})
и код старшей диаграммы, который мне нужен для отображения новых данных, например, каждые 1 минуту:
output$Plot1 <- renderHighchart ({
# invalidateLater(60000,session)
highchart() %>%
hc_chart(type = "container",
zoomType= "x"
) %>%
#axis
hc_xAxis(type='datetime',
# categories=c(min2$datetime),
labels = list(rotation = 90,
format = '{value:%e-%b %H:%M}'),
showLastLabel = TRUE
) %>%
hc_yAxis(opposite = FALSE,
title = list(text = "Call Success"),
labels = list(format = "{value}%", style=list(fontSize='13px')), max = 100) %>%
hc_add_series(all1_new, "spline", hcaes(x=datetime, y=percent, group=customer)
)%>%
})