hive表利用开窗函数进行数据去重
·
在进行业务数据分析中,遇上游客数据采集需求时往往会有一个游客在同一个数据集里存在多条数据的情况(一段时间内多次访问)。在进行数据清洗时往往需要对原始数据进行去重,group可以非常方便的完成任务。但如果需要留存所有数据段呢?这个时候也能做,干脆就是先提取到去重后id,而后进行join嘛。
但这样还是觉得麻烦。这个时候不妨采用开窗函数解决:先对id进行分区排序(row_number、cluster by),而后获取序号为1的就ok了。
示例代码如下
//排序
select
id,
mid,
dt,
row_number() over(cluster by id) rk
from ilog
; =>t1
//过滤
select
id,
mid,
dt
from
(
select
id,
mid,
dt,
row_number() over(cluster by id) rk
from ilog
)
t1
where rk=1;
更多推荐


所有评论(0)