在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子句的语义是什么?的主要内容,如果未能解决你的问题,请参考以下文章

在 Apache Spark SQL 中对多行进行操作

在 SQL/Spark 中使用窗口函数执行特定过滤器

在 Spark SQL 中使用窗口函数结束日期记录

如何在 Hive/Spark SQL 中使用窗口函数删除重叠

在 Apache Spark SQL 中将中值作为窗口函数 (UDAF) 移动

SQL - 如何在have子句中对结果进行分组和筛选后,如何汇总列?