是的,Hive SQL 支持窗口函数。从 Hive 2.0 版本开始,Hive 引入了窗口函数,允许用户在查询中使用窗口函数进行复杂的分析。窗口函数可以对一个或多个表中的行进行分区,并在每个分区上执行聚合操作。
Hive 支持的窗口函数包括:
ROW_NUMBER()
:为每个分区中的行分配一个唯一的序号。RANK()
:为每个分区中的行分配一个排名,根据排序顺序。DENSE_RANK()
:与 RANK()
类似,但排名不会跳过下一个排名。NTILE()
:将每个分区中的行分成指定数量的组(桶)。LEAD()
和 LAG()
:分别返回当前行前面或后面的行。SUM() OVER ()
、AVG() OVER ()
、COUNT() OVER ()
等:这些函数允许你在一个窗口上执行聚合操作。要使用窗口函数,你需要在查询中包含一个 OVER()
子句,用于指定窗口的定义。窗口定义包括分区键、排序顺序和窗口范围。
以下是一个简单的示例,展示了如何在 Hive SQL 查询中使用窗口函数:
SELECT employee_id, salary,
ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank
FROM employees;
这个查询将按薪水降序排列员工,并为每个员工分配一个基于薪水的排名。