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 group by GROUP_CONCAT函数使用
R语言dplyr包使用arrange函数group_by函数mutate函数生成分组数据的排名(rank)实战(Rank Variable by Group):升序排名降序排名以及相同排名的处理