Google bigquery 如何在BigQuery中创建每日汇总表而不运行;“响应太大,无法返回”;错误?

Google bigquery 如何在BigQuery中创建每日汇总表而不运行;“响应太大,无法返回”;错误?,google-bigquery,Google Bigquery,在传统的数据建模中,我创建了每小时和每天的汇总表,以减少数据存储并提高查询响应时间。然而,创建类似汇总表的尝试很容易遇到“响应太大而无法返回”错误。使用BigQuery创建汇总表的推荐方法是什么?我需要减少数据以降低存储和查询的成本 谢谢 听起来像是将所有数据附加到一个表中,然后想要创建更小的表来查询。。。对吗 一个选项是将数据加载到每小时一次的切片中,然后通过使用write\u disposition=write\u APPEND执行表复制操作来创建每日表和“所有”表。或者,您可以在查询中使用

在传统的数据建模中,我创建了每小时和每天的汇总表,以减少数据存储并提高查询响应时间。然而,创建类似汇总表的尝试很容易遇到“响应太大而无法返回”错误。使用BigQuery创建汇总表的推荐方法是什么?我需要减少数据以降低存储和查询的成本


谢谢

听起来像是将所有数据附加到一个表中,然后想要创建更小的表来查询。。。对吗

一个选项是将数据加载到每小时一次的切片中,然后通过使用write\u disposition=write\u APPEND执行表复制操作来创建每日表和“所有”表。或者,您可以在查询中使用多个表。例如
从表20130101、表20130102、表20130102中选择foo
。(注意,这不是连接,而是联合所有。这是bigquery查询语法的一个怪癖)

如果很难更改表的布局,那么目前还不支持较大的查询结果大小,但这是我们要求最多的功能之一,我们将其列为优先事项

此外,创建较小的表并不一定会提高查询性能,因为bigquery尽可能并行处理查询。它不会降低存储成本,除非您只存储表的一部分。当然,这将降低查询的成本,因为对较大的表运行查询的成本更高


如果您能更详细地描述一下您的场景,我可能会提供更具体的建议。

听起来您是在将所有数据附加到一个表中,然后希望创建更小的表来查询。。。对吗

一个选项是将数据加载到每小时一次的切片中,然后通过使用write\u disposition=write\u APPEND执行表复制操作来创建每日表和“所有”表。或者,您可以在查询中使用多个表。例如
从表20130101、表20130102、表20130102中选择foo
。(注意,这不是连接,而是联合所有。这是bigquery查询语法的一个怪癖)

如果很难更改表的布局,那么目前还不支持较大的查询结果大小,但这是我们要求最多的功能之一,我们将其列为优先事项

此外,创建较小的表并不一定会提高查询性能,因为bigquery尽可能并行处理查询。它不会降低存储成本,除非您只存储表的一部分。当然,这将降低查询的成本,因为对较大的表运行查询的成本更高


如果您对您的场景描述得更详细一些,我可能会提供更具体的建议。

最近发布的BigQuery功能允许获得更大的结果

现在可以指定标志和目标表。任意大小的结果将存储在指定的表中


最近发布的BigQuery功能允许获得大量结果

现在可以指定标志和目标表。任意大小的结果将存储在指定的表中


最初,1分钟的粒度数据插入到小时表中。预计每秒约1500000条记录插入到初始小时表中。然后每小时汇总将时间粒度从1分钟减少到10分钟。每日表,将时间段从10分钟更改为1小时粒度。每个汇总基本上将所有4个整数测量值相加,并按5个维度分组。我没有很多列,但在维度中有很多唯一的值。jobs.insert查询配置有一个新的实验标志--“allowLargeResults”。这需要为查询设置目标表,但允许任何大小的响应。这仍然是一个实验性的命令。目前,使用此功能的唯一方法是直接调用api。但是,bq.py命令行工具很快就会提供支持。当然,您的另一个选择是将汇总查询分解为多个查询,并将结果附加在一起。您可以使用以下方法来完成此操作:
SELECT foo,sum(bar)FROM table WHERE ABS(HASH(foo))%10=
第n个查询在哪里。非常感谢allowLargeResult建议!我要试试这个。现在,我最终查询了10分钟的数据,并将10分钟的汇总块追加到小时汇总表中。预计每秒约1500000条记录插入到初始小时表中。然后每小时汇总将时间粒度从1分钟减少到10分钟。每日表,将时间段从10分钟更改为1小时粒度。每个汇总基本上将所有4个整数测量值相加,并按5个维度分组。我没有很多列,但在维度中有很多唯一的值。jobs.insert查询配置有一个新的实验标志--“allowLargeResults”。这需要为查询设置目标表,但允许任何大小的响应。这仍然是一个实验性的命令。目前,使用此功能的唯一方法是直接调用api。但是,bq.py命令行工具很快就会提供支持。当然,您的另一个选择是将汇总查询分解为多个查询,并将结果附加在一起。您可以使用以下方法来完成此操作:
SELECT foo,sum(bar)FROM table WHERE ABS(HASH(foo))%10=
第n个查询在哪里。非常感谢allowLargeResult建议!我要试试这个。现在,我查询了10分钟的数据,并将10分钟的汇总数据块追加到每小时汇总表中