从GCS加载Google BigQuery失败,错误为字段不支持的空结构类型

时间:2019-07-12 20:37:34

标签: json google-bigquery

最近几个月我们一直在运行作业,这些作业将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'
}
}```

1 个答案:

答案 0 :(得分:0)

您的field2的现有架构是什么?它具有字段名称还是可以为空?

在BQ界面中运行以下查询:

select 123 as field1, STRUCT(NULL) as field2

查看JSON输出或保存表并查看架构。 field2内有一个结构。

现在运行:

select 123 as field1, STRUCT() as field2

您似乎不太可能允许使用空结构。结构类似于表中的普通行(尽管在这种情况下是嵌套的)。空行是什么样的?如果您将我的第一个示例想象为可以查询的行,您将获得1列,其值为空。对于第二个查询,该行将不存在...没有值或列名。该结构没有结构!