使用命令行工具将数据从 Datastore 加载到 BigQuery 时,是啥决定了包含子字段?
Posted
技术标签:
【中文标题】使用命令行工具将数据从 Datastore 加载到 BigQuery 时,是啥决定了包含子字段?【英文标题】:When loading data from Datastore into BigQuery with the command line tool, what determines the inclusion of subfields?使用命令行工具将数据从 Datastore 加载到 BigQuery 时,是什么决定了包含子字段? 【发布时间】:2015-08-13 13:04:42 【问题描述】:在使用命令行工具从 Datastore 加载到 BigQuery 时,我注意到以下奇怪的行为。当我使用选项 projection_fields 指定要包含的字段时,有一个相当复杂的嵌套字段,其子字段并未全部包含在内。我可以确定没有选择子字段的模式。奇怪的是,如果我不指定 projection_fields(即包括所有字段),则包括所有子字段。 (至少我必须这样假设,因为这些子字段之一实际上导致了错误,请参阅this previous question。)
我找不到任何关于 projection_fields 的解释,只是它只能用于***字段。这种行为背后是否有某种设计或者是一个错误?
【问题讨论】:
【参考方案1】:您的问题的答案在 official documentation for Jobs 配置中(向下滚动到“configuration.load.projectionFields”)。它确实说了以下内容(强调我的):
“如果 sourceFormat 设置为“DATASTORE_BACKUP”,则表示要从 Cloud Datastore 备份加载到 BigQuery 的实体属性。属性名称区分大小写,并且必须是***属性。如果没有属性指定时,BigQuery 会加载所有属性。如果在 Cloud Datastore 备份中未找到任何命名属性,则会在作业结果中返回无效错误。"
所以,要回答你的问题,这确实是设计使然。
【讨论】:
恐怕你误解了我的问题,或者我没有正确理解这意味着什么。我看过那个文档。我的问题是当您包含嵌套的***字段时会发生什么。我希望这也包括所有嵌套的子字段,但显然只包括一些子字段,我想知道该选择是否是设计使然,如果是这样,或者它是否是一个错误。【参考方案2】:我相信排除的子字段只是那些到处都是null
的子字段。问题中提到的错误有不同的原因,并不意味着在未设置 projection_fields
时会加载这些子字段。
【讨论】:
以上是关于使用命令行工具将数据从 Datastore 加载到 BigQuery 时,是啥决定了包含子字段?的主要内容,如果未能解决你的问题,请参考以下文章
错误“已设置非重复字段”。从 Datastore 加载到 BigQuery 时
BigQuery 从 bq 命令行工具加载数据 - 如何跳过标题行