hadoop—如何从一个非常大的配置单元表中查找记录,其中列标题\uuu timestamp、标题\uu change\u seq应该是最新的更新,id应该是唯一的

ffdz8vbo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(309)

我必须从配置单元表中查找记录,其中id、der\u timestamp、header\u change\u seq应该是唯一的,但在表中(id、der\u timestamp、header\u change\u seq)可以重复,因此在这种情况下,如果记录重复,我只能获取一条记录。

select b.* 
    from (SELECT ID, max(COALESCE(header__timestamp)) 
    max_modified,MAX(CAST(header__change_seq AS DECIMAL(38,0))) max_sequence 
    FROM table_name group by ID) a
    join table_name b on (a.id=b.id and 
    a.max_modified=b.header__timestamp and 
    a.max_sequence=b.header__change_seq)

因此,distinct id的总数是count-->244441250,但是通过上面的查询,我得到count-->244442548,因为有一些重复的记录,但是我必须只找到distinct id,其中(header\u change\u seq和header\u timestamp)应该最大。

goqiplq2

goqiplq21#

@拉胡尔;请试试这个。它使用了row\ u number(),因此在重复id、header\ u timestamp和hearder\ u change\ seq的情况下,它将只选择一条记录。希望有帮助。

select * 
from (
select *,
row_number() over ( partition by id order by header__timestamp desc, header__change_seq desc) as rnk 
from table_name) t
where t.rnk = 1;

相关问题