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

gho*_*der 9 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'}]}
Run Code Online (Sandbox Code Playgroud)

我可以更改它以添加字段"field2"到recordtest吗?所以新模式将如下所示:

{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'}]}
Run Code Online (Sandbox Code Playgroud)

我无法从UI中找到一种方法.但我能够使用API​​完成此操作.

Mik*_*ant 17

这可以使用各自的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"
   }
  ]
 }
}
Run Code Online (Sandbox Code Playgroud)

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

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

顺便说一句,您也可以使用独立的Explorers
Services> BigQuery API v2

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

  • 看起来不像!它在表模式页面的底部有"添加新字段"按钮 - 但看起来它只允许向root添加新字段 (3认同)

ama*_*tee 11

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

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

  • 这太棒了...比上面的方法更干净、更好、更快。感谢分享 (3认同)