在spark sql中对窗口函数使用having子句的语义是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在spark sql中对窗口函数使用having子句的语义是什么?相关的知识,希望对你有一定的参考价值。
我正在学习spark sql并注意到这是可能的:
SELECT a, b,
Row_number() OVER (partition BY a, b ORDER BY start_time DESC ) AS r ,
Count(*) OVER (partition BY a, b) AS count
FROM tbl
WHERE ...
**HAVING r <= 10**
据我所知,having子句只能应用于group-by子句中的聚合。 Impala不识别这种语法,也没有记录在spark sql的唯一reference I was able to find中。
那是怎么回事?语义是否与在外部查询中的where子句中放置相同条件相同(就像我通常会这样?)
答案
此问题现已解决 - 请参阅此处https://issues.apache.org/jira/plugins/servlet/mobile#issue/IMPALA-2215
但是,旧版本可能无法更新。
以上是关于在spark sql中对窗口函数使用having子句的语义是什么?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Hive/Spark SQL 中使用窗口函数删除重叠