我正在尝试运行一个非常简单的查询,但它失败并出现Resources exceeded
错误
我读到in another post,用于分配混音器数量的启发式算法可能会不时失败。
SELECT
response.auctionId,
response.scenarioId,
ARRAY_AGG(response) AS responses
FROM
rtb_response_logs.2016080515
GROUP BY
response.auctionId,
response.scenarioId
有没有办法解决我的查询:
response
由38个字段组成(大多数是短字符串)max(count())
的{{1}}有点低(165) 查询失败
错误:查询执行期间超出资源
职位ID :teads-1307:bquijob_257ce97b_1566a6a3f27
答案 0 :(得分:1)
当前限制是数组(由ARRAY_AGG
或其他方式生成)必须适合单个机器的内存。不过,我们已经做了一些最近的改进,这些改进应该有助于减少查询所需的资源。要确认这是否是问题,您可以尝试查询,例如:
SELECT
SUM(LENGTH(FORMAT("%t", response))) AS total_response_size
FROM
rtb_response_logs.2016080515
GROUP BY
response.auctionId,
response.scenarioId
ORDER BY total_response_size DESC LIMIT 1;
这将结构格式化为字符串,作为他们将需要多少内存来表示的粗略启发式。如果结果非常大,那么我们可能会重构查询以使用更少的内存。如果结果不是很大,那么其他一些问题就在发挥作用,我们会考虑修复它:)谢谢!