从 GCS 加载 Google BigQuery 失败并出现错误 Unsupported empty struct type for field
Posted
技术标签:
【中文标题】从 GCS 加载 Google BigQuery 失败并出现错误 Unsupported empty struct type for field【英文标题】:Google BigQuery load from GCS fails with error Unsupported empty struct type for field 【发布时间】:2019-07-12 20:37:34 【问题描述】:过去几个月,我们一直在运行将 json 数据从 GCS 加载到 BigQuery 的作业。 2019 年 6 月 29 日,它开始失败并显示错误消息
'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"
但是数据总是有这个空对象并且加载好几个月。 通过谷歌搜索,我找不到任何带有该错误消息的结果。
显示我正在使用的加载选项的编辑输出。
'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'
```
【问题讨论】:
【参考方案1】:您的 field2 的现有架构是什么?它有字段名还是可以为空?
在BQ界面运行这个查询:
select 123 as field1, STRUCT(NULL) as field2
查看 JSON 输出或保存表并查看架构。 field2
内部有一个结构。
现在运行:
select 123 as field1, STRUCT() as field2
您似乎不太可能允许空结构。结构类似于表中的普通行(尽管在这种情况下是嵌套的)。空行是什么样的?如果您将我的第一个示例想象为可以查询的行,您将获得 1 列具有空值。对于第二个查询,该行将不存在……没有值或列名。该结构没有结构!
【讨论】:
以上是关于从 GCS 加载 Google BigQuery 失败并出现错误 Unsupported empty struct type for field的主要内容,如果未能解决你的问题,请参考以下文章