renderDataTable не работает, когда данные извлекаются из Redshift - PullRequest
0 голосов
/ 04 июня 2018

У меня есть Shinydashboard (здесь используется пакет shinydashboard), где я беру ввод от пользователя для его имени пользователя и пароля, подключаюсь к Redshift, используя его, выполняю запрос Redshift, используя его учетные данные, а затем хочу отобразить выходные данные запросакак DataTable.

Почему-то вывод запроса не отображается, когда я делаю это, и он завершается с ошибкой, не выдавая никакой ошибки.

Вот выдержка из кода:

library(shinydashboard)
library(DBI)
library(shiny)
library(shinyjs)
library(RPostgreSQL)
library(stringi)
library(data.table)
library(DT)
library(dplyr)
    ui <- dashboardPage(
     dashboardHeader(title = "Basic dashboard"),
     dashboardSidebar(
       sidebarMenu(
         menuItem("Connect to RedShift", # 1, variables in this will start with menu_1_
         tabName = "connect_to_RS"
          ))),
     dashboardBody(
        tabItems(
          tabItem(tabName = "connect_to_RS",
                tabBox(
                  title = "",width = 12,
                  tabPanel(title = "Connection to Redshift", 
                  #declare 2 text inputs and submit button
                  fluidRow(
                     column(3,offset = 0,
                     textInput(inputId = "menu_1_tab_1_ltst_qtr",label = "Most Recent Quarter")),
                     column(3,offset = 0,
                                    textInput(inputId = "menu_1_tab_1_RS_user",label = "Redshift Username")),
                     column(3,offset = 0,
                     passwordInput(inputId = "menu_1_tab_1_RS_pwd",label = "Redshift Password")),
                     column(12,
                     submitButton(text = "Submit"))
                     ),
                     mainPanel(
                             dataTableOutput("menu_1_tab_1_table_1")

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



        conn <- reactive({
            RPostgres::dbConnect(
            drv = RPostgres::Postgres(),
            host = "xxxx",
            port = xxxx,
            dbname = 'xx',
            user = input$menu_1_tab_1_RS_user,
            password = input$menu_1_tab_1_RS_pwd)
            })
            ltst_qtr_data <- reactive({RPostgres::dbGetQuery(conn(),given_sql_query)  })
output$menu_1_tab_1_table_1 <- renderDataTable({
    expr = ltst_qtr_data()
  })
}
shinyApp(ui,server)

Примечание: код работает, если я использую функцию renderTable вместе с функцией tableOutput, и таблица отображается.Но я хочу использовать функцию dataTableOutput вместе с выводом renderDataTable.

1 Ответ

0 голосов
/ 04 июня 2018

Синтаксис выглядит нормально, я думаю, ваша реактивная переменная ltst_qtr_data равна нулю.

Убедитесь, что эта строка работает:

 ltst_qtr_data <- reactive({RPostgres::dbGetQuery(conn(),given_sql_query)  })
...