恢复表后的架构错误

时间:2018-01-07 22:07:21

标签: google-bigquery

在BQ中恢复以前覆盖(已删除)的表后,是否有人遇到过架构问题?

几个月前,我错误地覆盖了一个表,并使用取消删除(cp @ time)函数将其恢复。数据已恢复,但架构已损坏,导致数据无法使用。例如,我有一个公司ID列,最初作为字符串加载到bq中。该字段是一组数字,如果我让BQ自动定义该字段该字段将是一个整数。由于这是一个ID我手动将其作为字符串加载。在取消删除后,我尝试运行涉及此字段的查询,我收到错误:

表'log.428001'中列'Company_ID'的类型不匹配。预期类型'int64',文件中的实际类型'字符串':mdb = cloud-dataengine。

似乎底层数据是一个字符串,因为它始终是,但架构以某种方式期待Int64。支持和我已经尝试过各种各样的导出,演员和副本以某种方式获取这些数据,希望能够正确地重新导入。迄今为止没有任何效果。

有没有人经历过类似的事情?

1 个答案:

答案 0 :(得分:0)

似乎当你覆盖表时,架构从字符串更改为整数。复制已删除的数据时,即使数据的字段为字符串,也会使用整数模式进行复制。您可以尝试通过再次覆盖新表来更正它,将架构更改回字符串。然后,使用时间装饰器恢复/复制再次删除的数据。现在,最终表将包含类型字符串的数据和模式。