在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"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
(我不知道空元素来自哪里,并且编辑器太难以用来粘贴我现有的表定义.我注意到它缺少必需的元素,比如我的项目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"
}
}
Run Code Online (Sandbox Code Playgroud)
这完全没用.我已经完成了网络搜索,但没有找到任何正在使用的示例.
任何人都可以给我一个使用BigQuery补丁来改变表格的例子,以及它实际可以做什么的描述?
Jer*_*dit 12
TLDR:您需要在补丁请求的正文中提供完整的架构,而不仅仅是您尝试添加的字段.后端错误可能是由该数组中的空字段引起的.
BigQuery的API允许以两种方式更新表(和其他资源):更新和补丁.
该更新方法替换您提供的新的资源表的资源.在您想要获取现有表资源,修改它,然后将修改后的表资源完整地发布回BigQuery的情况下,此方法很有用.(但请注意,对象的某些字段(如creationTime)被视为不可变,因此将忽略为这些字段提供的新值.)
该补丁的方法只替换您在请求中包含的字段,并保留资源不变的其余部分.如果要对一个字段进行单独更改而不必担心其余字段,则此方法很有用.此算法以递归方式应用于任何嵌套对象,但不应用于嵌套数组.换句话说,随请求一起发送的补丁资源将与现有资源递归合并,直到遇到数组或标量值,此时补丁对象中的数组或值将替换现有资源中的数组或值.
由于您尝试更新的模式包含一个字段数组,并且由于patch方法更新了数组批发,因此您的补丁对象需要包含您在结果模式中需要的完整字段数组.(您无法通过在修补程序对象中指定单字段数组来添加字段.)
请注意,表ID在请求URL中给出,因此不需要将其包含在对象本身中.
最后,后端错误是我们的问题,可能是您的请求中两个空架构字段的结果.我们将进一步深入挖掘并希望改进未来的错误信息.
| 归档时间: |
|
| 查看次数: |
3383 次 |
| 最近记录: |