0

我正在开发一个每 30 分钟自动刷新一次的仪表板。

想法是每 30 分钟自动执行一次函数,将输出保存在 csv 文件中,然后根据生成的 csv 文件绘制图形。

30分钟后,重新做一遍。这次图表应该基于最新生成的 csv 文件。

(我还在努力从SQL中检索新的数据集,我们先关注这部分)</p>

仪表板框架几乎完成。但我不知道如何让它每 30 分钟重新运行一次函数以显示最新结果。

有什么方法可以定期执行该函数,然后根据最新输出绘制图表?我尝试了taskscheduler,但它没有用。

我已经编写了代码,以便将结果导出到 csv 文件,并且文件以时间戳命名(用于记录目的)。这意味着每 30 分钟将生成一个新文件。如何根据新生成的 csv 文件绘制图形?

data_frame <- data.frame (
  x = c(5, 7, 9, 14, 15),
  y = c(6, 8, 10, 16, 4)
)


function_a <- function(x,y){
  a<- x*y
  return(a)
}

output<-function_a(data_frame, data_frame)



str1<-'function_test.csv'
write.csv(output, file = paste0(sub('\\..*', ' ', str1), format(Sys.time(),'%d_%m__%H_%M'), '.csv'))


fig <- plot_ly(output, x = ~x, y = ~y, 
               name = 'Measured COD', type = 'scatter', mode = 'lines+markers',
               line = list(color = 'rgb(205, 12, 24)', width = 2)) 

fig <- fig %>% layout(title = "Effluent COD",
                      xaxis = list(title = "Days"),
                      yaxis = list (title = "Concentration (mg/L)"))
fig

这只是一个简单函数的示例,我正在使用它来测试哪种方法可能有效。

非常感谢您的帮助!</p>

4

1 回答 1

0

据我了解您的问题,这就是您所需要的。正如您所说,如何从 sql 调用 csv 文件是另一回事,但是对于函数/脚本的 30 分钟间隔执行,只需在 while 循环中将所述执行延迟几分钟

while (T){

  output<-function_a(data_frame, data_frame)
  
  str1<-'function_test.csv'
  write.csv(output, file = paste0(sub('\\..*', ' ', str1), format(Sys.time(),'%d_%m__%H_%M'), '.csv'))
  paste0(sub('\\..*', ' ', str1), format(Sys.time(),'%d_%m__%H_%M'), '.csv')
  
  x11(); plot(output$x, output$y) # simplified plotting   
  Sys.sleep(1) # 1800 for 30 min intervals
}
于 2021-08-03T09:22:33.393 回答