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

How to fetch 8 million records of Google Cloud using bigquery API in Node.js?

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

当我 运行 查询时 return 大约有 800 万行。 但它抛出错误:

Response too large to return

我怎样才能得到所有800万条记录,谁能帮忙。

试试这个,

在查询window下,有一个按钮'Show Options',点击它,然后你会看到一些选项,

  1. select 或创建新目的地 table;
  2. 单击 'Allow Large Results'

运行你的查询,看看它是否有效。

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

正如在 Quota-policy 查询中提到的那样,最大响应大小:压缩 128 MB(当 return 处理大型查询结果时无限制)

2。我们如何select查询请求中的所有记录而不是'Export Method'?

如果您计划 运行 一个可能 return 更大结果的查询,您可以在 job configuration.

中将 allowLargeResults 设置为 true

return 大结果的查询将需要更长的时间来执行,即使结果集很小,并且受制于 additional limitations:

  • 您必须指定目的地 table。
  • 您不能指定顶级 ORDER BY、TOP 或 LIMIT 子句。这样做会抵消使用 allowLargeResults 的好处,因为无法再并行计算查询输出。
  • Window 函数只有在与 PARTITION BY 子句结合使用时才能 return 大型查询结果。

详细了解如何分页以获得结果 here and also read from the BigQuery Analytics book, the pages that start with page 200, where it is explained how Jobs::getQueryResultsmaxResults 参数和 int 的阻塞模式一起工作。

更新:

查询结果大小限制 - 有时,很难知道压缩后的 128 MB 是多少 数据表示。

当您 运行 在 BigQuery 中进行普通查询时,响应大小限制为 128 MB 的压缩数据。有时,很难知道压缩后的 128 MB 数据手段。它会压缩 2 倍吗? 10倍?结果被压缩在 它们各自的列,这意味着压缩比往往非常 好的。例如,如果您有一列是一个国家的名称,那么 可能只有几个不同的值。当你只有几个不同的 值,这意味着没有很多唯一信息,并且该列 通常会很好地压缩。如果您 return 加密数据块,它们将 可能不会很好地压缩,因为它们大多是随机的。 (这在上面链接的书第 220 页上有解释)