如何使用Node.js中的bigquery API获取800万条Google Cloud记录?

时间:2016-09-16 14:23:32

标签: node.js database cloud google-bigquery google-cloud-storage

我正在使用Bigquery查询Google云数据。

当我运行查询时,它返回大约800万行。 但它会引发错误:

  

响应太大而无法返回

如何获得所有800万条记录,任何人都可以提供帮助。

2 个答案:

答案 0 :(得分:2)

<强> 1。 Big Query Response的最大大小是多少?

正如Quota-policy上提到的那样,查询最大响应大小:128 MB压缩(返回大型查询结果时无限制)

<强> 2。我们如何选择查询请求中的所有记录而不是“导出方法&#39;

如果您计划运行可能会返回较大结果的查询,则可以在job configuration中将allowLargeResults设置为true。

返回大结果的查询将花费更长的时间来执行,即使结果集很小,并且受additional limitations的限制:

  • 您必须指定目的地表。
  • 您无法指定顶级ORDER BY,TOP或LIMIT子句。这样做会否定使用allowLargeResults的好处,因为无法再并行计算查询输出。
  • 仅当与PARTITION BY子句一起使用时,窗口函数才能返回大型查询结果。

详细了解如何分页以获取结果here,还可以阅读BigQuery Analytics book(从第200页开始的页面),其中说明Jobs::getQueryResults如何协同工作使用maxResults参数和int的阻止模式。

<强>更新

查询结果大小限制 - 有时,很难知道128 MB的压缩内容 数据意味着。

在BigQuery中运行普通查询时,响应大小限制为128 MB 压缩数据。有时,很难知道128 MB的压缩 数据意味着它被压缩2倍? 10倍?结果在内压缩 它们各自的列,这意味着压缩比趋于非常大 好。例如,如果您有一个列是国家/地区的名称,那么就在那里 可能只有几个不同的价值观。当你只有几个不同的 值,这意味着没有很多独特的信息和列 通常压缩得很好。如果你返回加密的数据blob,他们会 可能不会很好地压缩,因为它们大多是随机的。 (这在第220页上面链接的书中有解释)

答案 1 :(得分:1)

试试这个,

在查询窗口下,有一个“显示选项”按钮,单击该按钮,然后您将看到一些选项,

  1. 选择或创建新的目标表;
  2. 点击“允许大结果”
  3. 运行您的查询,看看它是否有效。