在 Hive 数据处理中,row_number() 函数是非常常用的窗口函数,其核心功能是为结果集中的每一行分配一个连续且唯一的整数编号——当然,前提是你需要通过 ORDER BY 子句明确指定排序规则。

SELECT column1, column2, ..., row_number() OVER (PARTITION BY column1, column2 ORDER BY column3 DESC) as row_numFROM your_table;
下面通过具体示例加以说明。上述 SQL 语句中,PARTITION BY 子句将结果集按照 column1 和 column2 的值划分为多个独立的分区,每个分区内部再根据 column3 进行降序排列。随后,row_number() 函数会为每个分区内的每一行生成从 1 开始的连续编号,该编号列被命名为 row_num。
需要注意的关键特性是:即使 column1 和 column2 完全相同,只要 column3 的值存在差异,它们获得的 row_num 也必然不同。这意味着 row_number() 为每一行提供了唯一的编号,不会像 rank() 或 dense_rank() 那样产生并列排名。这一特性在需要精确去重、按顺序选取前 N 行或进行数据采样时尤为实用。
