【问题标题】:Google BigQuery load from GCS fails with error Unsupported empty struct type for field从 GCS 加载 Google BigQuery 失败并出现错误 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'
}
}```

【问题讨论】:

    标签: json google-bigquery


    【解决方案1】:

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

    在BQ界面运行这个查询:

    select 123 as field1, STRUCT(NULL) as field2
    

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

    现在运行:

    select 123 as field1, STRUCT() as field2
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2012-07-14
      • 2017-07-12
      • 2017-04-17
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      相关资源
      最近更新 更多