是否可以在UI的bigquery中添加一个新字段到RECORD类型的现有字段



是否可以将新字段添加到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"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'}]}

我无法从UI中找到这样做的方法。但是我可以使用API来完成。

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

首先,需要获取表的模式。您可以使用表来实现这一点。获取API资源管理器。确保在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

您也可以使用gcloud命令行工具中的bigquery CLI工具。我发现这种方法更简单,因为需要添加到请求中的信息更少。您不需要访问令牌或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

相关内容

  • 没有找到相关文章

最新更新