如何返回我的大型 Google BigQuery v2 响应?

Posted

技术标签:

【中文标题】如何返回我的大型 Google BigQuery v2 响应?【英文标题】:How do I return my large Google BigQuery v2 response? 【发布时间】:2012-10-02 20:08:13 【问题描述】:

我尝试运行一个简单的查询,但收到错误 response too large to return

SELECT accno, year, month, count(*) as cnt FROM eric.accesslogs_tbl GROUP BY accno、年、月 ORDER BY cnt,年月限1000;

我的数据表统计:

表大小:64.7 GB 行数:59,971,371

有解决办法吗?否则,我们无法使用它。

【问题讨论】:

查询试图返回多少行? 【参考方案1】:

您遇到的限制不是您可以返回的行数,而是GROUP BY 操作内部使用的数据量。

有一个实验性功能可以让您消除此限制:尝试使用GROUP EACH BY 而不是GROUP BY

或者,您也可以使用 TOP function 在不使用实验性功能的情况下执行此操作。您的案例使TOP 有点棘手,因为您想要三个不同字段的最佳结果,但您可以将它们连接在一起:

SELECT TOP(acct_month, 1000), COUNT(*) AS cnt FROM (
    SELECT CONCAT(CONCAT(CONCAT(CONCAT(
        STRING(accno), '-'), STRING(year)), '-'), STRING(month)) 
        AS acct_month 
    FROM eric.accesslogs_tbl)

结果会有点不稳定,因为它们只有一个字段 accno-year-month。

【讨论】:

以上是关于如何返回我的大型 Google BigQuery v2 响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何从未嵌套的数据(BigQuery 中的 Google Analytics 数据)返回正确的汇总总数

Google BigQuery SQL:使滚动平均子查询或加入对大型数据集更有效

Google Big Query + PHP -> 如何在不耗尽内存的情况下获取大型数据集

Google Bigquery Legacy SQL - 如果没有返回结果,如何返回 null 或零?

Google BigQuery 数据集导出

应用脚本:如何在 Google Sheet 中返回 BigQuery-Request 的 TotalRows