我有一个包含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
谢谢Nates
您可以执行以下操作:
select col1,col2,dayid,marketid,max(createdate) as createdate from tablename group by col1,col2,dayid,marketid
这样您就可以按除数据之外的所有列对数据进行分组,因此如果这些列中的行具有相同的值,则它们将位于同一个组中,然后,只需使用聚合函数"选择"所需的创建项像最大/最小等