【发布时间】:2014-01-24 20:26:09
【问题描述】:
你将如何克服上述限制?
我正在尝试使用 LEAD 和 LAG 窗口函数根据 3 条记录的序列查找流,然后计算它们的属性的一些聚合(计数、总和等)。
当我对一小部分数据运行查询时,一切都很好,并且 group by 运行正常。但是在更大的数据集上运行时,我得到:“查询执行期间资源超出。查询包含 GROUP BY 运算符,请考虑改用 GROUP EACH BY。”
在许多其他情况下,切换到 GROUP EACH BY 来完成工作...... 但是,由于我使用窗口函数,我不能使用 EACH...
有什么建议吗?最佳做法?
这是一个基于维基百科样本数据的样本查询。它显示了不同贡献者编辑标题的频率。 where 条件只是为了限制响应大小,如果您删除“B”我们得到结果,如果我们添加它我们得到“使用 EACH”建议。
select title,count (case when contributor_id<>LeadContributor then 1 else null end) as different,
count (case when contributor_id=LeadContributor then 1 else null end) as same,
count(*) as total
from
(
SELECT title,contributor_id,lead(contributor_id)over(partition by title order by timestamp) as LeadContributor
FROM [publicdata:samples.wikipedia]
where regexp_match(title,r'^[A,B]')=true)
group by title
谢谢
【问题讨论】:
-
你能提供一个示例数据集吗?示例查询?
-
你能提供你的用户吗?我将授予您对我的生产环境的读取权限并分享我有问题的查询。
-
您好 user2881671;我更愿意先用可公开讨论的查询和/或数据来试一试。对于 24x7 的一对一支持,Google 提供高级支持包,而 StackOverflow 则努力成为一个基于社区的渠道。如果您愿意分享更多信息,有很多人可以帮助并从这个问题中学习。
-
添加了一个基于 wikipedia public 的示例查询
标签: google-bigquery