【问题标题】:identify if same value is repeated in a column using hive使用 hive 识别列中是否重复相同的值
【发布时间】:2019-10-17 21:11:37
【问题描述】:

我有一个配置单元表,其中有一个名为 DATALIST 的列。它可以有以下值

XYZ_OLD
XYZ_NEW
ABC_OLD
EFG_OLD
EFG_NEW
PQR_NEW

我需要创建一个输出来识别列中没有 _NEW 和 _OLD 的所有名称。在这些 scnarios 中,它应该输出以下内容

Value  Reason
ABC    Missing NEW
PQR    Missing OLD
XYZ    Contains Both NEW and OLD
EFG    Contains both NEW and OLD

非常感谢任何有关 SQL/HIVEQL 逻辑的建议/帮助。

【问题讨论】:

    标签: sql hive apache-spark-sql hiveql


    【解决方案1】:

    我认为你可以做到:

    select split(datalist, '_')[1],
           (case when sum(case when datalist like '%NEW' then 1 else 0 end) > 0 and
                      sum(case when datalist like '%OLD' then 1 else 0 end) > 0
                 then 'BOTH'
                 when sum(case when datalist like '%NEW' then 1 else 0 end) > 0 
                 then 'NEW ONLY'
                 else 'OLD ONLY'
             end)
    
    from t
    group by split(datalist, '_')[1];
    

    【讨论】:

    • 我错过了问题中的一个信息。数据列表中的名称可以有多个“_”。在这种情况下,拆分将不起作用。另外,_OLD 和 _NEW 可能是 _OLDER 和 _NEWEST
    • @user2717470 。 . .这回答了您提出的问题。如果您有其他问题,请将其作为问题提出。
    • 好的..我会接受这个作为答案并发布一个单独的问题。如果你喜欢的话
    猜你喜欢
    • 2019-04-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2021-02-24
    相关资源
    最近更新 更多