【问题标题】:Shiny: BigQuery Fails when user selects "All" value闪亮:当用户选择“全部”值时 BigQuery 失败
【发布时间】:2015-12-29 22:14:50
【问题描述】:

我正在尝试使用 BigQuery 查询来填充 Shiny 中的图。该查询包括来自使用 selectInput 的 ui 的输入值。如果用户选择数据库中存在的值,例如年份是 2014,则查询可以正常工作,但是,我希望用户也能够选择“全部”。 “All”应该是所有值的选择,但是,我不确定如何在使用 selectInput 的查询中表达它。

server.r

data1 <- eventReactive(input$do_sql, {
bqr_auth(token = NULL, new_user = FALSE, verbose = FALSE)

query = paste('select month, event, partner_name, sum(f0_) from [dataset.table] where year =',input$year1,' and partner_name = \"',input$partner_name,'\"
              GROUP by 1,2,3
              ORDER by 1 asc
              LIMIT 10000', sep="")

bqr_query(projectId, datasetId, query, maxResults =2000)
})

ui.r

 ( 
  selectInput("year1", 
              "Year:", 
              c("All",2014,2015
                ))
),

 (
  selectInput("partner_name", 
              "Partner:", 
              c("All", 
                unique(as.character(data5$partner_name))))

【问题讨论】:

    标签: r shiny google-bigquery


    【解决方案1】:

    您应该稍微更改正在构建的查询
    所以,目前你有

    SELECT month, event, partner_name, SUM(f0_) 
    FROM [dataset.table] 
    WHERE year = selected_year
    AND partner_name = "selected_partner_name"
    GROUP BY 1,2,3
    ORDER BY 1 ASC
    LIMIT 10000
    

    分别与:

    selected_year --> input$year1
    selected_partner_name --> input$partner_name
    

    相反,您应该构造以下查询

    SELECT month, event, partner_name, SUM(f0_) 
    FROM [dataset.table] 
    WHERE (year = selected_year OR "selected_year" = "All") 
    AND (partner_name = "selected_partner_name" OR "selected_partner_name" = "All")
    GROUP BY 1,2,3
    ORDER BY 1 ASC
    LIMIT 10000
    

    我根本不是闪亮的用户-请原谅我的语法-以下只是我的 关于实施上述建议的猜测

    query = paste('SELECT month, event, partner_name, sum(f0_) 
        FROM [dataset.table] 
        WHERE (year =',input$year1,' OR "All" ="',input$year1,'") 
        AND (partner_name = \"',input$partner_name,'\" OR "All" = \"',input$partner_name,'\")
              GROUP by 1,2,3
              ORDER by 1 asc
              LIMIT 10000', sep="")
    

    【讨论】:

    • 我不明白。如果我删除了输入参数以及什么是“selected_pa​​rtner_name”,服务器文件将如何向查询发送正确的输入?另外,当年份是整数时,我必须向查询发送一个字符串。这将导致查询失败。
    • 你仍然需要使用参数。我刚刚修复了您需要使用闪亮的语法和参数构建/构造的查询
    【解决方案2】:

    Mikhail 的解决方案非常适用于字符变量,但数值无法正常工作。我决定使用字符日期范围而不是我最初使用的年份数字。谢谢。

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2018-10-01
      • 2018-11-04
      相关资源
      最近更新 更多