【发布时间】:2021-05-16 18:49:22
【问题描述】:
我有一个闪亮的应用程序,用户可以在其中过滤 SQL 电影数据库。到目前为止,您只能按不同国家/地区进行过滤。
con <- dbConnect(RSQLite::SQLite(), 'Movies.db')
movies_data <- dbReadTable(con, 'Movies')
ui <- fluidPage(
fluidRow(
selectInput(
inputId = "country",
label = "Country:",
choices = movies_data$journal,
multi=T
),
br(),
fluidRow(width="100%",
dataTableOutput("table")
)
)
)
server <- function(input, output, session) {
output$table <- renderDataTable({
dbGetQuery(
conn = con,
statement = 'SELECT * FROM movies WHERE country IN ( ? )',
params = list(input$country))
})
}
shinyApp(ui = ui, server = server)
现在我想为用户提供更多过滤器,例如演员或流派。所有过滤器都是多选和可选的。如何创建动态声明?我会为每个可能的组合使用一些 switch 语句(即没有国家过滤器,但只有动作电影)?这对我来说似乎有点累。
【问题讨论】:
-
如果您已经将整个数据库读入
movies_data,为什么还要尝试生成动态闪亮?我希望使用 R 过滤等会更快(因为它已经在内存中)。 -
我认为那并不理想。在最终产品中,我将使用另一种方法填充 inputselect。完整的数据真的很大,所以我不想将所有内容都加载到内存中。我可能会选择带有“UNIQE”的电影名称到列表或其他内容中。
标签: sql r sqlite shiny rsqlite