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。
左边一列是得分,右边一列是排序结果: