BigRQuery如何更新Google Big查询表中的列?

时间:2019-11-28 11:17:00

标签: r google-cloud-platform google-bigquery bigrquery

我正在努力使用R中的BigRQuery包更新Google BigQuery中的表。 我只是设法修补了新的列名,但没有更新值。

到目前为止,这是我的代码:

library(bigrquery)
library(tidyverse)
projectId = "ABCD"
datasetId = "test"
tableId = 'table1'

mydf = mpg #just loading an example dataset

x <- list(projectId = projectId,
          datasetId = datasetId,
          tableId   = tableId)

首次上传表格

bq_table_upload(x, values = mydf, fields = as_bq_fields(mydf))

现在在mydf中添加一列

mydf$new_column = 0

并尝试上传

bq_table_upload(x, values = mydf, fields = as_bq_fields(mydf)) 

这会给出一个错误,表明该表已经存在。

我可以使用

添加新列
bq_table_patch(x, fields = as_bq_fields(mydf))

但是它随处都是“ Null”值创建的,我不知道如何在“ new_column”中上传值(在这种情况下,它们应该为0)

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我发现可以使用DBI做到这一点。

library(DBI)
DBI: dbWRiteTable

首先,我们建立连接:

bq_conn <- dbConnect(bigquery(),
project = projectId,
dataset = datasetId)

然后

DBI::dbWriteTable(conn = bq_conn,
                  name = tableId,
                  value = df, 
                  as_bq_fields(df),
                  overwrite = TRUE, 
                  append = TRUE)

其中df是一个新的数据集,其中包含新行,这些行至少具有一些现有列的值。当然,可以根据需要将“追加”和“覆盖”选择为“真/假”。 希望它能对某人有所帮助(我欢迎其他解决方案/建议使它变得更好-我是GCP和R的新手)。我的谷歌搜索工作仅导致找到一个未解决的问题:https://community.rstudio.com/t/bigrquery-how-to-update-tables/31533