【问题标题】:Can I run a BigQuery SQL query and then continue wrangling the data using dbplyr?我可以运行 BigQuery SQL 查询,然后继续使用 dbplyr 处理数据吗?
【发布时间】:2021-06-08 23:34:15
【问题描述】:

在另一个与 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 是否无法完成我想做的事情吗?

【问题讨论】:

    标签: r dplyr google-bigquery dbplyr


    【解决方案1】:

    不是 BigQuery 用户,因此无法对此进行测试,但从查看 this example 来看,它似乎与您管道查询的方式无关 (%&gt;%)。相反,BigQuery 似乎不支持接收带有sql 字符串作为第二个参数的tbl

    所以当第二个参数是带有表名的字符串时,它可能会起作用:

    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)

    【讨论】:

    • 谢谢。我正在尝试使用 ODBC 包,虽然我遇到了一些连接问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多