我有一个包含 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
这样,您可以按除数据之外的所有列对数据进行分组,因此如果这些列中存在具有相同值的行,它们将位于同一组中,然后只需使用聚合函数“选择”您想要的创建日期如最大/最小等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)