今天用hive查数据时需要取每个分组的第一条数据,查了一发现hive 已经从0.11.0版本加入row_number函数,可以满足查询的需求。
ROW_NUMBER() 是从1开始,按照顺序,生成分组内记录的序列
用法如下:
ROW_NUMBER() OVER (partition BY COLUMN_A ORDER BY COLUMN_B ASC/DESC) rn
rn 是排序的别名执行时每组的编码从1开始
partition by:类似hive的建表,分区的意思;COLUMN_A 是分组字段
order by :排序,默认是升序,加desc降序;COLUMN_B 是排序字段
列如:
SELECT
g_field,
day
pv,
ROW_NUMBER() OVER(PARTITION BY g_field ORDER BY pv desc) AS rn
FROM test ;