List BigQuery表格数据:将输出列表到BigQuery表格中

List BigQuery表格数据:将输出列表到BigQuery表格中,list,google-bigquery,List,Google Bigquery,我知道有一种方法可以将查询结果放入表中;有一种方法可以将整个表复制到另一个表中;还有一种方法可以逐段列出表(tabledata:list使用startIndex、maxResults和pageToken) 但是,我要做的是使用tabledata检查现有表:列出并将结果逐段输出到其他表中。我想用它作为一种有效的方式来分割一个表 我找不到这样一个功能的参考,也找不到它的任何解决方法。重要的是要认识到:它不是BQL()的一部分,而是您可以在您的选择中使用的。 也就是说,您在问题中概述的逻辑可以通过多种

我知道有一种方法可以将查询结果放入表中;有一种方法可以将整个表复制到另一个表中;还有一种方法可以逐段列出表(tabledata:list使用startIndex、maxResults和pageToken)

但是,我要做的是使用tabledata检查现有表:列出并将结果逐段输出到其他表中。我想用它作为一种有效的方式来分割一个表

我找不到这样一个功能的参考,也找不到它的任何解决方法。

重要的是要认识到:它不是BQL()的一部分,而是您可以在您的选择中使用的。 也就是说,您在问题中概述的逻辑可以通过多种方式实现,下面是一个示例(高级步骤):

使用
pageToken
在循环内调用
Tabledata.List
,以进行下一次迭代或退出循环。 在每次迭代中,处理来自Tabledata.List的响应,提取实际数据并使用with API插入目标表。您还可以使用内部循环来遍历给定迭代中提取的行,并定义要转到哪个表/碎片的行。 这是非常通用的逻辑,具体的实现取决于您使用的客户端。
希望这对您的描述有所帮助,我建议您使用云数据流的批处理版本:

Dataflow已经支持BigQuery表作为源和汇,并将所有数据保存在Google的网络中。这种方法还可以扩展到任意大的表


TableData.list-ing您的整个表格可能适用于小型表格,但撇开网络开销不谈,绝对不建议用于任何中等大小的表格。

这意味着数据在本地下载(BQ之外),然后发送回BQ。我知道如何做到这一点,我不需要使用InsertAll(这是相当昂贵的),但可以使用一个简单的插入作业。问题是,我能在BQ范围内完成,而不必再次退出吗?也许对于使用google cloud的联合表?这一点很重要,
在阅读了别人对你的问题的答案后,你应该做的第一件事就是对答案进行投票,就像任何其他用户(拥有足够声誉)一样。投票选出对你有帮助的答案
,并接受你认为对你最有帮助的答案。还有更多。。。当有人回答你的问题时,你可以检查一下该怎么做——谢谢肖恩。因此,如果我理解正确的话:a)我们必须走出BQ,才能有效地做到这一点。b) 数据流本质上是使用云存储和计算引擎的一种方式(因此理论上可以通过编程调用这两种方式,而不是使用数据流)。对的现在,数据流是否有Restful API,或者我们必须使用Java来处理它?这将使事情变得过于复杂……就您所描述的而言,云数据流似乎是最有效的手段。它们提供粘合和编排逻辑来并行处理BigQuery表,并将结果写入一个或多个输出表。通过与GCE、GCS和BigQuery的交互,您完全可以自己直接完成,但我认为您会发现这相当复杂。W.r.t.dataflow的API,因为它正在运行您的java代码,所以您确实需要与java API进行并行处理方面的交互。然而,我相信有restful管理API来触发执行等。