[编辑20160426:此错误现在似乎已经解决了!]
[编辑20160219:再次更新此问题,以反映不同的错误消息。另见我提交的bug report。]
我们有一个数据存储表,其中包含category
类型的字段Category
,它是一个自定义类。当我们尝试将此表加载到BigQuery(来自数据存储区备份)时,会出现问题。结果表应包含(简化):
category.subfield1
,category.subfield2
,category.subfield3.subsubfield1
,category.subfield4
,category.subfield5
相反,BigQuery对类别领域造成了严重破坏:
category_1.record.subfield1
,category_1.record.subfield2
,category_1.record.subfield3.subsubfield1
,category_1.entity.subfield1
,category_1.entity.subfield1
,category_1.entity.subfield3.subsubfield1
,category_1.entity.subfield4
,category_1.entity.subfield5
,category_1.provided
(省略十几个__key__
- 子区域以供说明。)
在20160219之前,category
字段的乱码输出更糟糕,但有一种解决方法:通过选项category
明确列出所有字段,包括projection_fields
。现在已经不再可能了,因为它会产生不同的错误消息:Field:category [...] Entity was of unexpected kind "__record__"
原始工作ID:
项目编号:711939958575
没有projection_fields:job_Qw6-ygtZNFJ-Y7W0uLEqdvOrO_8
with projection_fields:job_lzzXo92lud9r5kvW7Z1kuzFLxS4
答案 0 :(得分:1)
将数据存储区中的备份加载到BigQuery时遇到了同样的问题。我们有一个订单'我们拥有嵌套实体的客户'客户'。自从我们在嵌套实体' Customer'中的一个字段上添加索引之后,我们就会得到已经设置的"非重复字段" BigQuery的错误。
原因是在嵌套实体中的字段上设置索引(例如,字段上的索引电子邮件在Customer中)在Order实体上创建了一个名为 customer.email 的索引。将数据加载到BigQuery时,会产生两个字段,名为 customer.email ,一个来自嵌套实体,另一个来自索引。
我们的解决方案是删除嵌套实体的索引,以便在将数据存储备份加载到BigQuery时避免这些冲突。不幸的是,我们确实必须删除数据库中的所有现有记录,这对我们来说不是一个大问题,但是您必须确保正确删除索引。