在 shiny 中显示 dbplyr collect 进度
Displaying dbplyr collect progress in shiny
我正在写一个闪亮的仪表板。为了加载数据,我使用了
的等价物
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()
的进度,最好映射到闪亮的进度条吗?
我已经使用 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)
我正在写一个闪亮的仪表板。为了加载数据,我使用了
的等价物 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()
的进度,最好映射到闪亮的进度条吗?
我已经使用 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)