使用命令行工具从Datastore加载到BigQuery时,我注意到以下奇怪的行为。当我使用选项 projection_fields 指定要包含的字段时,有一个相当复杂的嵌套字段,其子字段不是全部包含在内。我可以在选择子字段时确定没有模式。奇怪的是,如果我没有指定 projection_fields (即包括所有字段),则包括所有子字段。 (至少我必须假设,因为其中一个子字段实际上导致错误,请参阅this previous question。)
我无法找到 projection_fields 的任何解释,只是它只能用于顶级字段。这种行为背后是否有一些设计或者它是一个错误?
答案 0 :(得分:0)
您的问题的答案在official documentation for Jobs配置中(向下滚动到" configuration.load.projectionFields")。它确实说了以下(强调我的):
"如果sourceFormat设置为" DATASTORE_BACKUP",则指示从Cloud Datastore备份加载到BigQuery的实体属性。属性名称区分大小写,必须是顶级属性。如果未指定任何属性,BigQuery将加载所有属性。如果在Cloud Datastore备份中找不到任何命名属性,则在作业结果中返回无效错误。"
所以,回答你的问题,确实是设计上的。
答案 1 :(得分:0)
我认为排除的子字段只是那些<input type="hidden" name="packagelist[0]" id="packagelist_0_" value="" />
<input type="hidden" name="packagelist[1]" id="packagelist_1_" value="" />
<input type="hidden" name="packagelist[2]" id="packagelist_2_" value="" />
...
<input type="hidden" name="packagelist[x]" id="packagelist_x_" value="" />
到处都是的字段。问题中提到的错误有不同的原因,并不意味着在未设置null
时会加载这些子字段。