【问题标题】:Displaying dbplyr collect progress in shiny以闪亮的方式显示 dbplyr 收集进度
【发布时间】:2020-05-17 16:58:14
【问题描述】:

我正在编写一个闪亮的仪表板。要加载数据,我使用的是

    mydata <- reactive({
      in.positions <- isolate(input$positions)
      (db_conn
        %>% tbl('table1')
        %>% filter(position %in% in.positions)
        %>% inner_join(db_conn %>% tbl('table2'), by = 'id')
        %>% collect()
      )
   })

这里的db_conn 是一个dbPool 对象。 问题是有时会有很多数据,加载它需要一些时间。 有什么方法可以监控collect() 的进度,最好映射到闪亮的进度条?

【问题讨论】:

  • 我会用加载器挂钩将使用新数据更新的 ui 组件(例如,在更新之前等待查询完成的表或绘图)。 shinycssloaders 可能会在这里达到目标。我只在for 循环中看到过传统的加载栏。

标签: r shiny dplyr dbplyr


【解决方案1】:

我使用shinycssloaders 起草了一个示例仪表板。要点是将您的 UI 元素通过管道传输到 withSpinner 函数中。希望这会有所帮助。

library(shiny)
library(shinycssloaders)
library(ggplot2)
library(magrittr)

ui <- fluidPage(  
  sidebarPanel(
    selectInput('n_datapoints', label = 'how many?',
                choices=c(1000, 10000, 1000000))
  ),

  mainPanel(
    plotOutput('plot') %>%
      # Adds a dark red spinner while waiting for the plot
      withSpinner(color='#8B0000')
  )
)

server <- function(input, output, session) {

  # Some long-running data retrieval
  data <- reactive({
    rnorm(input$n_datapoints)
  })

  # Get the plot
  output$plot <- renderPlot(
    data() %>% 
      plot()
  )
}

shinyApp(ui, server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2011-03-15
    • 2013-10-28
    相关资源
    最近更新 更多