Shiny: Реактивные запросы SQL (вывод 1-го запроса как ввод 2-го запроса)
Возможно ли иметь 2 SQL-запроса и принимать выходные данные 1-го из них как входные данные 2-го?
Что я имел в виду, я хотел бы использовать первый запрос SQL, может быть, что-то вроде этого:
rs <- dbSendQuery(con, "Select distinct X From K.Tabelle order by X asc")
data <- fetch(rs)
Поэтому я мог бы получить список уникальных значений из столбца X. Далее я хотел бы использовать этот список в качестве выбора в selectInput("select1",...)
виджет из shiny
(и было бы здорово, если бы у меня также был выбор, чтобы получить все значения), который будет в дальнейшем использоваться во втором / последнем запросе:
query <- reactive( sprintf("select * from K.Tabelle",
" where", input$tablename, "=", input$select1, sep="")
Является ли это возможным? Я понятия не имею, где я должен поставить первый запрос? На стороне сервера, а?
Мой код:
library(ROracle)
library(shiny)
get_data <-
function(query){
on.exit(dbDisconnect(con)) ## important to close connection
con <- dbConnect(dbDriver("Oracle"),"xx",username="user",password="pwd")
dbGetQuery(con,query)
}
server <- shinyServer(
function(input, output) {
query <- reactive( sprintf("select * from K.Tabelle",
" where", input$tablename, "=", input$select1, sep="")
## simply displaying reactive inputs
output$table <- renderTable(
get_data(query())
)
})
ui_panel <-
tabPanel("Test",
sidebarLayout(
sidebarPanel(
),
mainPanel(
tableOutput("table")
)
)
)
ui <- shinyUI(navbarPage("Test",ui_panel))
runApp(list(ui=ui,server=server))
Спасибо за советы