闪亮:当用户选择 "All" 值时 BigQuery 失败
Shiny: BigQuery Fails when user selects "All" value
我正在尝试使用 BigQuery 查询来填充 Shiny 中的绘图。该查询包括来自 ui 使用 select 输入的输入值。如果用户 selects 是数据库中存在的值,例如年份是 2014,查询工作正常,但是,我希望用户也能够 select "All." "All" 应该是所有值的 selection,但是,我不确定如何在查询中使用 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))))
您应该稍微更改正在构建的查询
所以,目前你有
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
I am not shiny user at all - so excuse my syntax - below is just my
guess with regard of implementing above suggestion
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="")
Mikhail 的解决方案非常适用于字符变量,但数字无法正常工作。我决定使用字符日期范围而不是我最初使用的年份数字。谢谢。
我正在尝试使用 BigQuery 查询来填充 Shiny 中的绘图。该查询包括来自 ui 使用 select 输入的输入值。如果用户 selects 是数据库中存在的值,例如年份是 2014,查询工作正常,但是,我希望用户也能够 select "All." "All" 应该是所有值的 selection,但是,我不确定如何在查询中使用 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))))
您应该稍微更改正在构建的查询
所以,目前你有
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
I am not shiny user at all - so excuse my syntax - below is just my guess with regard of implementing above suggestion
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="")
Mikhail 的解决方案非常适用于字符变量,但数字无法正常工作。我决定使用字符日期范围而不是我最初使用的年份数字。谢谢。