我正在尝试确定是否有办法将参数传递给sql
RMarkdown 中连接到 BigQuery 的块:
```{r setup}
library(bigrquery)
bq_auth(path = "access_token.json")
db <- dbConnect(
bigquery(),
dataset = 'my_data',
project = 'my-project',
use_legacy_sql = FALSE
)
parameter_value = 10L
```
```{sql, echo=FALSE, connection=db, output.var="x}
SELECT @parameter_value
```
```{r}
print(x)
# I want to see 10 here.
```
在此处查看 BigQuery 参数化查询文档 - https://cloud.google.com/bigquery/docs/parameterized-queries
更新 1
尽管?parameter_value
注入似乎对标量有效,但它不适用于向量,例如:
```{r}
parameter_value = c(10L, 20L)
```
```{sql, echo=FALSE, connection=db, output.var="x}
SELECT UNNEST(?parameter_value)
```
将失败:
vapply(values, function(x) dbQuoteLiteral(conn, x), character(1)) 中的错误:值的长度必须为 1,但 FUN(X[ 1 ]) 结果的长度为 2
带有标量的事件不使用 BigQuery 引擎来参数化查询。
更新 2
我认为现在不可能做到这一点,因为一些DBI API没有在bigrquery
包中实现,我已经提出了一个问题。并在这里knitr
打包