bigrquery & DBI语法错误:意外字符串字面量'table_name'问题咨询
解决bigrquery+dbplyr组合的表名字符串识别错误问题
之前使用DBI和dplyr连接BigQuery的标准代码(来自bigrquery官方仓库)如下:
library(DBI) con <- dbConnect( bigrquery::bigquery(), project = "publicdata", dataset = "samples", billing = billing ) library(dplyr) natality <- tbl(con, "natality") natality %>% select(year, month, day, weight_pounds) %>% head(10) %>% collect()
但新版本的bigrquery、dbplyr、DBI组合出现了问题:调用tbl(con, "DATE_RANGE_SLICES_V3")时,表名会被识别为字符串而非SQL标识符,生成类似SELECT * FROM 'DATE_RANGE_SLICES_V3'的错误SQL,触发BigQuery语法报错。
可行的解决办法
- 显式指定表的所属数据集,用
in_schema避免字符串误解析:tbl(con, in_schema("你的数据集名", "DATE_RANGE_SLICES_V3")) - 降级到之前验证过可用的版本组合,比如锁定bigrquery 1.4.1、dbplyr 2.3.3、DBI 1.1.3,可通过renv或pak工具管理版本
- 用
dbplyr::sql()强制将表名当作SQL标识符处理:tbl(con, sql("DATE_RANGE_SLICES_V3"))
内容的提问来源于stack exchange,提问作者Jaskeil
相关产品推荐
相关产品推荐

