gpt4 book ai didi

hive - 根据列删除配置单元中的重复行

转载 作者:行者123 更新时间:2023-12-01 21:57:22 24 4
gpt4 key购买 nike

我有一个包含 10 列的 HIVE 表,其中前 9 列将有重复的行,而第 10 列则不会,因为 CREATE_DATE 将具有创建日期。

示例:

如果我今天在表中插入 10 行,它将具有与今天日期相同的 CREATE_DATE。如果我明天再次插入相同的 10 行,它将具有不同的 CREATE_DATE,这会产生我使用 DISTINCT 的问题。

有没有办法删除基于9列的重复记录并忽略第10列。

示例:假设表中有 5 列。这是一个由 DAYID 和 MARKETID 分区的外部 HIVE 表。每当 CREATEDATE 以外的列(如第 1 行和第 2 行引用)相同,或者如果行重复(如第 3 行和第 4 行引用),则应保留这些行中的任何一行。保留哪个并不重要。

COL1 COL2 CREATEDATE   DAYID    MARKETID  
A 1 20131206 20131207 1234
A 1 20131207 20131207 1234
A 1 20131206 20131207 1234
B 1 20131206 20131207 1234
B 1 20131206 20131207 1234
C 2 20131206 20131207 1234
C 2 20131207 20131207 5678

输出---

COL1 COL2 CREATEDATE   DAYID    MARKETID
A 1 20131206 20131207 1234
B 1 20131206 20131207 1234
C 2 20131206 20131207 1234
C 2 20131207 20131207 5678

谢谢内茨

最佳答案

您可以执行以下操作:

select col1,col2,dayid,marketid,max(createdate) as createdate
from tablename
group by col1,col2,dayid,marketid

这样,您就可以按除数据之外的所有列对数据进行分组,因此如果这些列中存在具有相同值的行,它们将位于同一组中,然后只需使用“选择”您想要的创建日期即可聚合函数,如最大/最小等。

关于hive - 根据列删除配置单元中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20410672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com