Hive数据去重简写,至少省1/3的sql行数

147 阅读1分钟

数据去重经常需要写row_number 函数来进行去重,下面来介绍一种精简写法

1、常见用法

select id
       ,time
from
    (
     select  id
             ,time
             ,row_number over(partition by id order by time desc) fn 
     from table_a 
     )
where fn =1

2、精简写法

select  id
        ,time
from    table_a 
qualify row_number over(partition by id order by time desc) =1

通过第二步的写法,我们可以只需要在末尾加上qualify 函数来进行开窗去重,1方法和2方法是一样的效果,原理是差不多的,只是在sql的写法上,sql代码量越少,维护成本越低。