是否可以在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.get和bigquery.tables.patch
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
| 归档时间: |
|
| 查看次数: |
1540 次 |
| 最近记录: |