2015-10-26 50 views
2

我有返回几十万行的作业/查询。我想获得查询的结果,并将它们作为json存储在存储桶中。通过Google BigQuery API将查询结果导出为JSON

有没有这样做的直接方式?现在我能想到的唯一方法是:

  • 集allowLargeResults为true
  • 设置一个随机命名的目的地表来保存查询输出
  • 创建第二个作业中的“临时来提取数据“目标表格到存储桶中的文件
  • 删除随机的”临时“表。

这似乎有点凌乱和迂回。我将把所有这些都包含在一个与用户界面相关的服务中,这些服务会让很多用户触及它,而不愿意管理所有这些临时表。

回答

4

1)正如你所说的步骤是好的。您需要将Google云端存储用于导出作业。从BigQuery中导出数据解释为here,还检查不同路径语法的变体。

然后,您可以将文件从GCS下载到本地存储。

Gsutil工具可以帮助您进一步将文件从GCS下载到本地计算机。

使用这种方法,您首先需要导出到GCS,然后转移到本地机器。如果您有一个消息队列系统(如Beanstalkd)来驱动所有这些操作,则可以轻松完成一系列操作:提交作业,监视作业状态,完成初始化导出到GCS时,然后删除临时表。

另请注意,您可以通过API update a table并设置expirationTime属性,使用此方法您不需要将其删除。 2)如果使用BQ Cli工具,则可以将输出格式设置为JSON,并且可以重定向到文件。这样你可以在本地实现一些出口,但是它有一些其他限制。

这出口第一1000线JSON

bq --format=prettyjson query --n=1000 "SELECT * from publicdata:samples.shakespeare" > export.json