微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以运行 BigQuery SQL 查询,然后继续使用 dbplyr 处理数据吗?

如何解决我可以运行 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 举报,一经查实,本站将立刻删除。