我使用BigQuery API将表备份到云存储,效果很好。但是,当我尝试创建还原作业以将备份文件加载到BigQuery时,我收到一条错误消息,指出复制作业失败,因为没有这样的字段'对于架构中指定的所有字段。模式作为JSON文件保存在repo中,其他api操作使用它,这个问题发生在我们拥有的所有表中,所以我不认为模式更改是问题。下面是工作配置和示例错误,任何想法都会受到赞赏。
{'configuration': {
'load': {
'destinationTable': {
'projectId': 'someproject',
'tableId': 'backuptesttable',
'datasetId': 'warehouse_dev'
},
'sourceFormat': 'NEWLINE_DELIMITED_JSON',
'sourceUris': ['gs:///followers/backupfile.json.gz'],
'schema': 'schema data loaded from file'
}
}
更新
我将我正在测试的表格切换到'粉丝'因为它有点简单。这是架构:
[{'mode': 'required', 'name': 'time', 'type': 'timestamp'},
{'mode': 'required', 'name': 'followers', 'type': 'integer'},
{'mode': 'required', 'name': 'account', 'type': 'string'},
{'mode': 'required', 'name': 'platform', 'type': 'string'},
{'mode': 'required', 'name': 'source', 'type': 'string'}]
这是完整的错误:
Copy job failed: {'state': 'DONE', 'errors': [{'reason': 'invalid', 'location': 'File: 0 / Offset:0 / Line:1 / Column:12 / Field:followers', 'message': 'no such field'}, {'reason': 'invalid', 'location': 'File: 0 / Offset:110 / Line:2 / Column:12 / Field:followers', 'message': 'no such field'}, {'reason': 'invalid', 'location': 'File: 0 / Offset:220 / Line:3 / Column:12 / Field:followers', 'message': 'no such field'}, {'reason': 'invalid', 'location': 'File: 0 / Offset:330 / Line:4 / Column:12 / Field:followers', 'message': 'no such field'}, {'reason': 'invalid', 'location': 'File: 0 / Offset:440 / Line:5 / Column:12 / Field:followers', 'message': 'no such field'}], 'errorResult': {'reason': 'invalid', 'location': 'File: 0 / Offset:440 / Line:5 / Column:12 / Field:followers', 'message': 'no such field'}}
这是备份文件中的示例行:
{"followers":"12345","account":"some account","platform":"plus","source":"API","time":"2015-04-14 14:58:13 UTC"}
'跟随'始终是行中的第一个字段,但是bigquery似乎无法将其识别为给定模式的有效字段...我尝试重新排列模式文件中字段的顺序无效。