资源超出BigQuery

时间:2018-12-12 06:41:20

标签: google-bigquery

运行以下查询时出现错误:

查询执行期间超出了资源:无法在分配的内存中执行查询。高峰使用:限制的158%。内存消耗最大的用户:用于分析OVER()子句的排序操作:98%其他/未分配:2%

select *, row_number() over(PARTITION BY Column_A ORDER BY Column_B)
from
(SELECT
*
FROM
  Table_1 UNION ALL
SELECT
  *
FROM
  Table_2 UNION ALL
SELECT
  *
FROM
  Table_3
)

有人可以帮助我如何更改此查询,还是可以更改bigquery中的内存限制?

3 个答案:

答案 0 :(得分:1)

欢迎亚伦,

此错误意味着由于内存限制,BigQuery无法处理整个查询,ORDER BY函数占用大量内存,请尝试将其删除,并且我希望您的查询运行正常。

如果需要对结果进行排序,请尝试将无序查询写到表中,然后在该表上运行新查询以对结果进行排序。

如果您有兴趣。这是有关BigQuery如何在内存中执行的有趣文章: https://cloud.google.com/blog/products/gcp/in-memory-query-execution-in-google-bigquery

我不认为您可以覆盖或更改此内存限制,但很高兴被证明是错误的。

答案 1 :(得分:0)

您可以在不使用ORDER BY的情况下尝试OVER

答案 2 :(得分:0)

请确保您的ORDER BY实际上是在最后一步执行,此外,请考虑使用LIMIT子句来避免“ 资源超出”或“ 响应”太大”会失败。