是否可以从UI中的bigquery中将新字段添加到RECORD类型的现有字段?

时间:2016-10-14 01:02:24

标签: google-bigquery

是否可以在bigquery中将新字段添加到RECORD类型的现有字段?例如,如果我当前的架构是:

{u'fields': [{u'mode': u'NULLABLE', u'name': u'test1', u'type': u'STRING'},
             {u'fields': [{u'mode': u'NULLABLE',
                           u'name': u'field1',
                           u'type': u'STRING'}],
              u'mode': u'NULLABLE',
              u'name': u'recordtest',
              u'type': u'RECORD'}]}

我可以将其更改为添加字段" field2"记录测试?所以新模式将如下所示:

{u'fields': [{u'mode': u'NULLABLE', u'name': u'test1', u'type': u'STRING'},
             {u'fields': [{u'mode': u'NULLABLE',
                           u'name': u'field1',
                           u'type': u'STRING'},
                          {u'mode': u'NULLABLE',
                           u'name': u'field2',
                           u'type': u'STRING'}],
              u'mode': u'NULLABLE',
              u'name': u'recordtest',
              u'type': u'RECORD'}]}

我无法通过用户界面找到一种方法。但我能够使用API​​来做到这一点。

2 个答案:

答案 0 :(得分:15)

这可以使用各自的API Explorers在UI中完全完成

首先,您需要获取表格的架构。您可以使用Tables.get API Explorer执行此操作。确保在fields框中选择/检查架构(最好不要选中其余部分)。点击Authorize and Execute。完成后 - 复制响应文本 - 它看起来就像下面的

{
 "schema": {
  "fields": [
   {
    "name": "id",
    "type": "STRING",
    "mode": "NULLABLE"
   },

... 

   {
    "name": "comment",
    "type": "STRING",
    "mode": "NULLABLE"
   }
  ]
 }
}

然后,使用Tables.patch API Explorer
将所需的字段添加到先前检索的模式中并将其原样粘贴到Patch Body框中(在此框的右上角选择自由格式编辑器,只需用模式的文本替换内部的任何内容)。再次点击Authorize and Execute

你现在完成了。
请注意,无论您将新字段放在记录中的什么位置 - 它都会添加到此记录字段的末尾

不过,顺便说一句,您可以使用独立的探索者 Services > BigQuery API v2

我们在这里使用的是bigquery.jobs.getbigquery.tables.patch

答案 1 :(得分:0)

您还可以使用作为 gcloud command line tool 一部分的 bigquery CLI 工具。我发现这条路线更容易,因为添加到请求中的信息较少。您不需要访问令牌或 API 密钥,因为您的会话已经建立。您可以找到您需要了解的一切here,但其基础知识是:

bq show \ --schema \ --format=prettyjson \ YOUR_PROJECT_ID:YOUR_DATASET.YOUR_TABLE_NAME > schema_file.json 然后修改架构文件以添加新的嵌套字段。

然后运行: bq update YOUR_PROJECT_ID:YOUR_DATASET.YOUR_TABLE_NAME schema_file.json