如何解决我可以运行 BigQuery SQL 查询,然后继续使用 dbplyr 处理数据吗?
在另一个与 Amazon Athena 合作的项目中,我可以这样做:
con <- DBI::dbConnect(odbc::odbc(),Driver = "path-to-driver",S3OutputLocation = "location",AwsRegion = "eu-west-1",AuthenticationType = "IAM Profile",AWSProfile = "profile",Schema = "prod")
tbl(con,# Run sql query
sql('SELECT *
FROM TABLE')) %>%
# Without having collected the data,I Could further wrangle the data inside the database
# using dplyr code
select(var1,var2) %>%
mutate(var3 = var1 + var2)
但是,现在使用 BigQuery 时出现以下错误
con <- DBI::dbConnect(bigrquery::bigquery(),project = "project")
tbl(con,sql(
'SELECT *
FROM TABLE'
))
Error: dataset is not a string (a length one character vector).
知道使用 BigQuery 是否无法完成我想做的事情吗?
解决方法
不是 BigQuery 用户,因此无法对此进行测试,但从 this example 来看,它似乎与您如何进行查询 (%>%
) 无关。相反,BigQuery 似乎不支持接收带有 tbl
字符串作为第二个参数的 sql
。
所以当第二个参数是带有表名的字符串时,它很可能会起作用:
tbl(con,"db_name.table_name")
但是如果第二个参数是 sql
类型,您应该会期望它失败:
query_string = "SELECT * FROM db_name.table_name"
tbl(con,sql(query_string))
其他需要测试的内容:
- 使用
odbc::odbc()
而不是bigquery::bigquery()
连接到 BigQuery。该问题可能是由 bigquery 包引起的。 - 第二种不涉及 sql 的方法:
tbl(con,query_string)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。