gpt4 book ai didi

google-bigquery - 如何使用BigQuery补丁?

转载 作者:行者123 更新时间:2023-12-04 13:40:31 25 4
gpt4 key购买 nike

在BigQuery API文档中,有一种称为patch的方法。我希望可以使用它来更改现有表的架构。不幸的是,bq不支持它。但是根据他们的网站,您可以在https://developers.google.com/bigquery/docs/reference/v2/tables/patch上尝试一下。但是,当我尝试发送以下请求时:

PATCH https://www.googleapis.com/bigquery/v2/projects/(my project id)/datasets/tmp_bt/tables/change_cols?key={YOUR_API_KEY}

Content-Type: application/json
Authorization: Bearer (removed)
X-JavaScript-User-Agent: Google APIs Explorer

{
"schema": {
"fields": [
{
},
{
},
{
"mode": "nullable",
"name": "gotchahere",
"type": "string"
}
]
}
}

(我不知道空元素是从哪里来的,编辑器非常痛苦,无法仅粘贴到我现有的表定义中。我注意到它缺少必需的元素,例如我的项目ID,我希望将其包括在内,因为它们的形式是必需的),然后我得到响应:
cache-control:  private, max-age=0
content-encoding: gzip
content-length: 122
content-type: application/json; charset=UTF-8
date: Thu, 13 Jun 2013 22:22:09 GMT
expires: Thu, 13 Jun 2013 22:22:09 GMT
server: GSE

{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": "Backend Error"
}
],
"code": 503,
"message": "Backend Error"
}
}

这是完全没有用的。我已经完成了一次网络搜索,但是找不到使用中的任何示例。

谁能给我一个使用BigQuery补丁修改表的示例,以及对它实际上可以做什么的描述?

最佳答案

TLDR :您需要在补丁请求的正文中提供完整的架构,而不仅仅是要添加的字段。后端错误很可能是由该数组中的空字段引起的。

BigQuery的API允许以两种方式更新表(和其他资源):更新和修补程序。

update方法将表资源替换为您提供的新资源。在要获取现有表资源,对其进行修改,然后将该修改后的表资源全部回发给BigQuery的情况下,此方法很有用。 (但是请注意,对象的某些字段(例如creationTime)被认为是不可变的,因此为这些字段提供的新值将被忽略。)

patch方法仅替换您包含在请求中的字段,而其余资源保持不变。如果您要对一个字段进行孤立的更改而不必担心其余字段,则此方法很有用。该算法以递归方式应用于任何嵌套对象,但是而不是应用于嵌套数组。换句话说,将与请求一起发送的修补程序资源与现有资源递归合并,直到遇到数组或标量值为止,此时,修补程序对象中的数组或值将替换现有资源中的数组或标量值。

由于您要更新的模式包含一个字段数组,并且由于patch方法将批发数组更新,因此您的patch对象需要包含要在结果模式中包含的完整字段数组。 (您不能通过在补丁对象中指定一个字段数组来添加字段。)

请注意,表ID是在请求URL中提供的,因此不需要将其包含在对象本身中。

最后,后端错误是我们这方面的问题,很可能是您请求中两个空模​​式字段的结果。我们将进一步进行挖掘,并希望在将来改善错误消息。

关于google-bigquery - 如何使用BigQuery补丁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com