最近几个月我们一直在运行作业,这些作业将JSON数据从GCS加载到BigQuery。在6/29/2019它开始失败并显示错误消息
{'reason':'invalid','message':“字段'field_2'不受支持的空结构类型”}
作业参数或json的结构没有变化。 数据确实包含带有空对象的json
{
"field_1":"value_1",
"field_2":{},
"field_3":{"field_3_1":"value_3_1"},
"field_4":"value_4"
}
但是数据始终有这个空对象,并且可以正常加载几个月。 使用Google搜索时,找不到该错误消息的任何结果。
编辑后的输出,显示我正在使用的加载选项。
'createDisposition': 'CREATE_IF_NEEDED',
'writeDisposition': 'WRITE_APPEND',
'sourceFormat': 'NEWLINE_DELIMITED_JSON',
'ignoreUnknownValues': True,
'autodetect': True,
'schemaUpdateOptions': ['ALLOW_FIELD_ADDITION', 'ALLOW_FIELD_RELAXATION']
}, 'jobType': 'LOAD'
}, 'status': {
'errorResult': {
'reason': 'invalid',
'message': "Unsupported empty struct type for field 'field_2'"
},
'errors': [{
'reason': 'invalid',
'message': "Unsupported empty struct type for field 'field_2'"
}
],
'state': 'DONE'
}
}```
答案 0 :(得分:0)
您的field2的现有架构是什么?它具有字段名称还是可以为空?
在BQ界面中运行以下查询:
select 123 as field1, STRUCT(NULL) as field2
查看JSON输出或保存表并查看架构。 field2
内有一个结构。
现在运行:
select 123 as field1, STRUCT() as field2
您似乎不太可能允许使用空结构。结构类似于表中的普通行(尽管在这种情况下是嵌套的)。空行是什么样的?如果您将我的第一个示例想象为可以查询的行,您将获得1列,其值为空。对于第二个查询,该行将不存在...没有值或列名。该结构没有结构!