Google bigquery 指向OOM的数组_AGG

Google bigquery 指向OOM的数组_AGG,google-bigquery,Google Bigquery,我正在尝试运行一个非常简单的查询,但它失败了,出现了一个超出资源的错误。 我读到,用于分配混频器数量的启发式方法可能会不时失败 SELECT response.auctionId, response.scenarioId, ARRAY_AGG(response) AS responses FROM rtb_response_logs.2016080515 GROUP BY response.auctionId, response.scenarioId 在知道以下情况的情

我正在尝试运行一个非常简单的查询,但它失败了,出现了一个
超出资源的
错误。
我读到,用于分配混频器数量的启发式方法可能会不时失败

SELECT
  response.auctionId,
  response.scenarioId,
  ARRAY_AGG(response) AS responses
FROM
  rtb_response_logs.2016080515
GROUP BY
  response.auctionId,
  response.scenarioId
在知道以下情况的情况下,是否有办法修复我的查询:

  • 响应
    由38个字段组成(其中大多数是短字符串)
  • 单个
    响应的
    max(count())
    有点低(165)
查询失败
错误:查询执行期间超出了资源。

作业ID:teads-1307:bquijob_257ce97b_1566; A6A3F27

当前的限制是,阵列(通过
阵列_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;
这将结构格式化为字符串,作为表示它们需要多少内存的粗略启发。如果结果非常大,那么也许我们可以重新构造查询以使用更少的内存。如果结果不是很大,那么其他一些问题正在起作用,我们将研究如何修复它:)谢谢