重置蜂巢中的排名

Reset the rank in hive

我想按如下所示对数据进行分区。但是正如 link 中给出的那样,没有内置函数可以重新从 1 开始重新设置排名。我已经尝试过 ROW_NUMBER(), RANK(), DENSE_RANK()。那么,谁能告诉我如何实现这一目标?

  Col1     Col2    Rank
cookie1    ABC      1
cookie1    ABC      1
cookie1    EFG      2
cookie1    EFG      2
cookie1    IJK      3
cookie1    IJK      3

cookie2    XYZ      1
cookie2    XYZ      1
cookie2    LMN      2

DENSE_RANK() 与 PARTITION BY 子句一起使用。

温度为(

  select Col1      ,Col2  , DENSE_RANK() OVER   

  (PARTITION BY Col1      ORDER BY Col2  ) AS Rank 

  from rnktest 
 )
select *  from temp ;

好了,您需要 dense_rank 按第一列分区并按第二列排序。

select *,dense_rank() over (partition by Col1 order by Col2) as rn from test_rank;

输出:-

cookie1 ABC     1
cookie1 ABC     1
cookie1 EFG     2
cookie1 EFG     2
cookie1 IJK     3
cookie1 IJK     3

cookie2 LMN     1
cookie2 XYZ     2
cookie2 XYZ     2