使用命令行工具将数据从Datastore加载到BigQuery时,是什么决定了子字段的包含?

时间:2015-08-13 13:04:42

标签: google-app-engine google-bigquery google-cloud-datastore

使用命令行工具从Datastore加载到BigQuery时,我注意到以下奇怪的行为。当我使用选项 projection_fields 指定要包含的字段时,有一个相当复杂的嵌套字段,其子字段不是全部包含在内。我可以在选择子字段时确定没有模式。奇怪的是,如果我没有指定 projection_fields (即包括所有字段),则包括所有子字段。 (至少我必须假设,因为其中一个子字段实际上导致错误,请参阅this previous question。)

我无法找到 projection_fields 的任何解释,只是它只能用于顶级字段。这种行为背后是否有一些设计或者它是一个错误?

2 个答案:

答案 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时会加载这些子字段。