是否可以在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来做到这一点。
答案 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
你现在完成了。
请注意,无论您将新字段放在记录中的什么位置 - 它都会添加到此记录字段的末尾
我们在这里使用的是bigquery.jobs.get
和bigquery.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