自 6 月 2 日以来,我们在分析函数方面遇到了问题。 当查询(而不是分区(传递特定大小时,查询将失败并显示以下错误:
查询执行期间超出的资源:无法查询 在分配的内存中执行。峰值使用:限制的 125%。顶部内存 消费者: 分析 OVER(( 条款: 97% 其他/未归因: 3% .在 [....]
有没有人遇到过同样的问题?
BigQuery 根据正在运行的表的大小为OVER()
子句选择多个并行工作线程。当 BigQuery 分配给查询的工作线程处理过多数据时,我们可以看到资源超出错误。
我认为这个问题可能来自OVER()
条款和使用的数据量。您需要尝试对查询脚本(特别是OVER()
子句(进行一些调整,如错误消息中所述。
要了解有关该错误的更多信息,请查看官方文档。
这就是帮助的是插槽 - 执行SQL查询所需的计算能力单位:
当您注册统一费率定价计划时,您将购买专用的 用于查询处理的槽数。您可以指定 按地点为附属于该项目的所有项目分配名额 计费帐户。如果您是 对统一费率定价感兴趣。
我希望您发现上述信息有用。
通过将原始数据拆分为多个分片并在每个分片上应用分析函数,我们能够克服这一限制。
本质上(对于 8 个分片(:
WITH
t AS (
SELECT
RAND () AS __aux,
*
FROM <original table>
)
SELECT
* EXCEPT (__aux),
F () OVER (...) AS ...
FROM t
MOD (CAST (__aux*POW(10,9) AS INT64), 8) = 0
UNION ALL
....
SELECT
* EXCEPT (__aux),
F () OVER (...) AS ...
FROM t
MOD (CAST (__aux*POW(10,9) AS INT64), 8) = 7