BigQuery GROUP BY/GROUP EACH BY 资源超出错误,但查询不包含 GROUP BY 运算符

Posted

技术标签:

【中文标题】BigQuery GROUP BY/GROUP EACH BY 资源超出错误,但查询不包含 GROUP BY 运算符【英文标题】:BigQuery GROUP BY/GROUP EACH BY resources exceeded error, but the query doesn't contain a GROUP BY operator 【发布时间】:2014-12-04 19:42:19 【问题描述】:

这个查询:

SELECT spin_id, COUNT(*) over(partition by spin_id) notes, note
FROM
 (
   SELECT spin_id, idfa, note, amount, balance, machine
   FROM islot.ledger2, islothd.ledger2
   WHERE machine =‘SlotMachineG2.SlotMachine41’ AND ds >= ‘2014-11-20’
 ) a
LEFT OUTER JOIN EACH views.internal_devices b
ON a.idfa = b.ios_idfa
WHERE b.ios_idfa is null
ORDER BY notes ASC;

...可靠地失败了:

查询执行期间资源超出。该查询包含一个 GROUP BY 运算符,请考虑改用 GROUP EACH BY。

...但是,很明显,这个查询不包含 GROUP BY。通常我们只会将任何 JOIN/GROUP 子句提升为等效的 EACH,但我不清楚在哪里应用它。

有什么建议吗?

【问题讨论】:

您期待什么样的输出?当您将其限制为非常小的输出时(例如通过将子选择的 where 子句限制为少量行),查询是否会为您提供正确的结果? 【参考方案1】:

如果您要查询的表之一是 Table View,而该表本身被定义为“GROUP BY”查询,则可能会发生这种情况。鉴于您要加入的表位于名为“views”的数据集中,我怀疑是这种情况。

【讨论】:

不,视图都在使用 GROUP EACH。【参考方案2】:

Count() Over() 是一个group by 操作。我会尝试将查询分解为子查询,并在较低级别进行聚合。

【讨论】:

以上是关于BigQuery GROUP BY/GROUP EACH BY 资源超出错误,但查询不包含 GROUP BY 运算符的主要内容,如果未能解决你的问题,请参考以下文章

mysql连接3个表与group by group by

MySQL group by GROUP_CONCAT函数使用

order by group by连用

R语言dplyr包使用arrange函数group_by函数mutate函数生成分组数据的排名(rank)实战(Rank Variable by Group):升序排名降序排名以及相同排名的处理

Warning: (1260, 'Row xxx was cut by GROUP_CONCAT()')

Linq order by,group by 和 order by 每组?