作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一次又一次地遇到这个障碍......
JOIN EACH and GROUP EACH BY clauses can't be used on the output of window functions
对于无法在单个节点上处理的非常大的数据集,是否有关于如何使用窗口函数 (Over()) 的最佳实践或建议?
分段我的数据并使用不同的过滤器运行相同的查询可以工作,但它非常有限,需要大量时间(和人工)并且成本高(对相同的数据集运行相同的查询 30 次而不是一次)。
引用下面 Jeremy 的回答...好多了,但仍然不能正常工作。如果我采用原始查询示例:
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
现在工作...但是
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-Z]')=true
)
group each by title
再次给出资源超出错误...
最佳答案
窗口函数现在可以根据 OVER 中给出的 PARTITION BY 子句以分布式方式执行。如果您为窗口函数提供 PARTITION BY,您的数据将被并行处理,类似于 JOIN EACH 和 GROUP EACH BY 的处理方式。
此外,您可以在不序列化执行的情况下对 JOIN EACH 或 GROUP EACH BY 的输出使用 PARTITION BY。为 PARTITION BY 使用与 JOIN EACH 或 GROUP EACH BY 相同的键特别有效,因为数据不需要在连接/聚合和窗口函数执行之间重新洗牌。
关于google-bigquery - 可并行化 OVER EACH BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262753/
我是一名优秀的程序员,十分优秀!