如何在Node.js中使用bigquery API获取800万条Google Cloudlogging?

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

当我运行查询时,它返回大约8百万行。 但它会抛出错误:

响应太大,无法返回

我怎么能得到所有800万条logging,任何人都可以帮忙。

1.什么是大查询响应的最大尺寸?

正如在配额策略查询中提到的,最大响应大小:128 MB压缩(在返回大型查询结果时不受限制)

2.我们如何select查询请求中的所有logging而不是“导出方法”?

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

即使结果集较小,返回较大结果的查询也需要较长时间才能执行,并受到其他限制 :

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

请阅读更多关于如何分页以获得结果的信息 ,同时也阅读BigQuery分析的书籍 ,以页面200开始的页面,其中解释了Jobs :: getQueryResults如何与maxResults参数和int的阻塞模式一起工作。

更新:

查询结果大小限制 – 有时候,很难知道128MB的压缩数据是什么意思。

在BigQuery中运行正常查询时,响应大小限制为128 MB的压缩数据。 有时候,很难知道128MB的压缩数据是什么意思。 它压缩了2倍吗? 10倍? 结果被压缩在各自的列中,这意味着压缩率趋于非常好。 例如,如果您有一列是一个国家的名称,则可能只有几个不同的值。 当你只有几个不同的值时,这意味着没有很多独特的信息,并且列通常会压缩得很好。 如果您返回encryption的数据块,它们可能不会很好压缩,因为它们大部分是随机的。 (这在第220页上面链接的书中有介绍)

尝试这个,

在查询窗口下,有一个button“显示选项”,单击它,然后你会看到一些选项,

  1. select或创build一个新的目标表;
  2. 点击“允许大型结果”

运行您的查询,并查看是否有效。