【发布时间】:2020-06-19 08:58:44
【问题描述】:
我正在尝试确定是否有办法将参数传递给 RMarkdown 中连接到 BigQuery 的 sql 块:
```{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
我认为现在不可能这样做,因为bigrquery 包中没有实现一些DBI APIs,我为此提出了issue。还有knitr包here
【问题讨论】:
-
我对@987654332@ 了解不多(我也没有使用
sql块的经验)但是您是否可能需要将格式正确的字符串作为parameter_value传递?paste(c(10, 20), collapse = ", ")之类的东西或 SQL 期望的任何语法?
标签: r google-bigquery r-markdown knitr bigrquery