【问题标题】:Hive - Remove duplicates, keeping newest record - all of it [duplicate]Hive - 删除重复项,保留最新记录 - 全部 [重复]
【发布时间】:2017-02-12 16:11:06
【问题描述】:

有几个这样的问题,没有答案,比如这个here.

我想我会发布另一个希望得到一个。

我有一个带有重复行的配置单元表。考虑以下示例:

*ID             Date           value1         value2*
1001            20160101       alpha          beta
1001            20160201       delta          gamma
1001            20160115       rho            omega
1002            20160101       able           charlie
1002            20160101       able           charlie

完成后,我只想要两条记录。具体来说,这两个:

*ID             Date           value1         value2*
1001            20160201       delta          gamma
1002            20160101       able           charlie

为什么是那两个?对于 ID=1001,我想要最新的日期和该行中的数据。对于 ID=1002,答案其实是一样的,但是具有该 ID 的两条记录完全重复,我只想要一条。

那么,关于如何做到这一点有什么建议吗?使用 ID 和“最大”日期的简单“分组依据”将不起作用,因为它忽略了其他列。我不能把'max'放在那些上面,因为它会从所有记录中提取最大列(将从旧记录中提取'rho'),这不好。

我希望我的解释是清楚的,我感谢任何见解。

谢谢

【问题讨论】:

  • this 有帮助吗?
  • 感谢 mtoto。效果很好!!!我想我将不得不进入Windowing。发布为“答案”,你会得到一张支票。

标签: hadoop apache-spark mapreduce hive


【解决方案1】:

试试这个:

WITH temp_cte AS (
        SELECT      mt.ID                                                           AS ID 
                    , mt.Date                                                       AS Date 
                    , mt.value1                                                     AS value1 
                    , mt.value2                                                     AS value2
                    , ROW_NUMBER() OVER (PARTITION BY mt.ID ORDER BY mt.Date DESC)  AS row_num
        FROM        my_table mt
    )
    SELECT      tc.ID           AS ID 
                , tc.Date       AS Date 
                , tc.value1     AS value1
                , tc.value2     AS value2
    FROM        temp_cte tc 
    WHERE       tc.row_num = 1 
    ;

或者您可以执行 MAX() 并将表连接到自身,其中 ID = ID 和 max_date = 日期。 HTH。

【讨论】:

    猜你喜欢
    • 2019-12-20
    • 1970-01-01
    • 2015-09-27
    • 2021-11-16
    • 2020-12-19
    • 2011-08-31
    • 2020-10-07
    • 2013-08-06
    • 2013-07-10
    相关资源
    最近更新 更多