Google bigquery 如何使用BigQuery修补程序?
在BigQueryAPI文档中有一个名为patch的方法。我希望可以使用它来改变现有表的模式。不幸的是,bq不支持它。但根据他们的网站,你可以在。但是,当我尝试时,它会发送以下请求:Google bigquery 如何使用BigQuery修补程序?,google-bigquery,Google Bigquery,在BigQueryAPI文档中有一个名为patch的方法。我希望可以使用它来改变现有表的模式。不幸的是,bq不支持它。但根据他们的网站,你可以在。但是,当我尝试时,它会发送以下请求: 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 A
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允许以两种方式更新表(和其他资源):更新和修补 该方法使用您提供的新资源替换表资源。如果您希望获取现有表资源,对其进行修改,然后将修改后的表资源全部发布回BigQuery,则此方法非常有用。(但是,请注意,对象的某些字段(如creationTime)被视为不可变的,因此将忽略为这些字段提供的新值。) 该方法仅替换您在请求中包含的字段,并保持资源的其余部分不变。如果您希望对一个字段进行单独更改而不必担心其他字段,则此方法非常有用。此算法递归应用于任何嵌套对象,但不应用于嵌套数组。换句话说,随请求发送的修补程序资源将与现有资源递归合并,直到遇到数组或标量值,此时修补程序对象中的数组或值将替换现有资源中的数组或值 由于您尝试更新的架构包含一个字段数组,并且由于patch方法批量更新数组,因此您的patch对象需要包含您希望在结果架构中包含的完整字段数组。(不能通过在面片对象中指定一个字段数组来添加字段。) 请注意,表ID是在请求URL中给出的,因此它不需要包含在对象本身中
最后,后端错误是我们这边的一个问题,可能是请求中两个空模式字段的结果。我们将进一步挖掘并希望在将来改进错误消息。根据更新方法,我们也应该做同样的事情。这方面的例子也同样有效。几个问题。更改字段时,现有字段会发生什么变化?名字匹配吗?它是否有可能重命名它们?如果类型不匹配怎么办?还有一个无关的性能问题。假设我有一系列的活动。当我查询它时,我总是希望限制时间范围,并具有随机的其他条件(活动类型、用户等)。所以我会把所有的时间都放在桌子上,但只想要一天、一周或一个月。有什么技巧可以使这种使用模式更有效吗?模式更新只允许您附加字段或放松字段模式(例如,必需->可选)。您不能更改字段名或类型,也不能对其重新排序。您无法针对您的访问模式优化单个表(这是我们的工作)。但是,您可以做的一件事是按日期分割表,并只查询包含您关心的日期的表。这种方法还可以为您节省资金,因为您不必扫描每个查询中的所有数据。既然我得到了您的关注,您是否有可能添加更好的错误消息?现在,我在一个API调用中面临“缺少必需的参数”,但我不知道该插入哪个参数,或者在哪里插入它。只要给我起个名字就很有意思了。