运行以下查询时出现错误:
查询执行期间超出了资源:无法在分配的内存中执行查询。高峰使用:限制的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中的内存限制?
答案 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
子句来避免“ 资源超出”或“ 响应”太大”会失败。