hive--row_number() 组内排序函数

1.要解决的问题

相对用一次请求得到的item的粗排进行排序,平时得到的粗排结果是[0,1]之间的一个值,但是想将其转换为index的形式。

2.解决方案

hive中的函数row_number() 

使用方法:

select COLUMN_A,COLUMN_B,
row_number() OVER (partition BY COLUMN_A ORDER BY COLUMN_B ASC/DESC) rn
from table

rn 是排序的别名执行时每组的编码从1开始 
partition by:类似hive的建表,分区的意思;COLUMN_A 是分组字段 
order by :排序,默认是升序,加desc降序;COLUMN_B 是排序字段

3.结果

分析:

针对我的这个问题,COLUMN_A字段就表示一次请求,对一次请求召回的item粗排的结果,排序依据是按照COLUMN_B,就是粗排的得分,产生的结果是rn。

左边一列是得分,右边一列是排序结果:

参考:https://blog.csdn.net/jobschen/article/details/70821064

猜你喜欢

转载自blog.csdn.net/pearl8899/article/details/83144224