Запустите SQL при выборе вкладки с блестящей - PullRequest
2 голосов
/ 08 февраля 2020

В этом блестящем приложении три SQL запускаются при запуске. Тем не менее, это создает большую нагрузку при запуске. Можно ли запустить SQL при выборе каждой вкладки?

ui.R

shinyUI(
  navbarPage(title = NULL,
             tabPanel("home","hello"),
             tabPanel("1",
                      tableOutput("table1")),
             tabPanel("2",
                      tableOutput("table2")),
             tabPanel("3",
                      tableOutput("table3")))
)

server.R

shinyServer(function(input, output) {

  output$table1 <- renderTable({
    sql <- "SELECT * FROM City WHERE ID = '1';"
    query <- sqlInterpolate(pool, sql)
    dbGetQuery(pool, query)
  })

  output$table2 <- renderTable({
    sql <- "SELECT * FROM City WHERE ID = '2';"
    query <- sqlInterpolate(pool, sql)
    dbGetQuery(pool, query)
  })

  output$table3 <- renderTable({
    sql <- "SELECT * FROM City WHERE ID = '3';"
    query <- sqlInterpolate(pool, sql)
    dbGetQuery(pool, query)
  })

})

global.R

library(shiny)
library(DBI)
library(pool)

pool <- dbPool(
  drv = RMySQL::MySQL(),
  dbname = "shinydemo",
  host = "shiny-demo.csa7qlmguqrf.us-east-1.rds.amazonaws.com",
  username = "guest",
  password = "guest"
)

1 Ответ

3 голосов
/ 08 февраля 2020

Вы можете попробовать реактив, как показано ниже:

shinyServer = function(input, output){
    reactive({
      if (req(input$navbar) == "table1")
        # Run your sql1
      if (req(input$navbar) == "table2")
        # Run your sql2
      if (req(input$navbar) == "table3")
        # Run your sql3
    })

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...