BigRQuery 如何更新谷歌大查询表中的列?

Posted

技术标签:

【中文标题】BigRQuery 如何更新谷歌大查询表中的列?【英文标题】:BigRQuery How to update a column in a table on google big query? 【发布时间】:2019-11-28 11:17:00 【问题描述】:

我正在努力使用 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】:

我发现使用 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 是一个新数据集,其中包含新行以及现有列的至少一些值。 Append 和 Overwrite 当然可以根据需要选择 TRUE/FALSE。 希望它可以帮助某人(我欢迎其他解决方案/建议使其变得更好 - 我是 GCP 和 R 的新手)。我的谷歌搜索结果只找到了一个未回答的问题:https://community.rstudio.com/t/bigrquery-how-to-update-tables/31533

【讨论】:

以上是关于BigRQuery 如何更新谷歌大查询表中的列?的主要内容,如果未能解决你的问题,请参考以下文章

允许谷歌大查询中的大结果

如何使用谷歌应用脚​​本在谷歌大查询中保存 2 个表?

如何将嵌套的 json 导入谷歌大查询

左连接以填充谷歌大查询中 2 个表中的数据

如何在谷歌大查询中从谷歌云存储上传表格

将工作从谷歌云存储插入谷歌大查询时路径无效