首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Hive QL / Impala / Python删除重复ID

使用Hive QL / Impala / Python删除重复ID
EN

Stack Overflow用户
提问于 2018-03-21 17:03:38
回答 1查看 45关注 0票数 0

我需要帮助对跨不同ID集的用户列表(20 million+)进行重复数据消除。

它看起来是这样的:

  • 我们有三种用户名: ID1,ID2和ID3。-至少有两个总是一起发送:带ID2的ID1或带ID3的ID2。ID3永远不会随ID1一起发送。
  • 用户可以有多个ID1、ID2或ID3。
  • 所以有时,在我的表中,我会有几行具有许多不同it的行,但所有这些行都有可能描述一个用户。

举个例子:

所有这些ID都显示一个用户。

我想我可以添加一个fourthID (GroupID),这将是对它们进行重复数据删除的那个。有点像这样:

问题是:我知道如何通过CURSOR / OPEN / FETCH / NEXT命令在SQL Server上执行此操作,但我的环境中只有Hive QL、Impala和Python可用。

有没有人知道最好的方法是什么?

万分感谢,

雨果

EN

回答 1

Stack Overflow用户

发布于 2018-03-21 19:20:42

根据您的示例,假设id2始终存在,您可以聚合行,按id2分组:

代码语言:javascript
复制
select max(id1) id1,  id2, max(id3) id3 from
( --your dataset as in example
 select 'A'  as id1, 1 as id2,  null   as id3 union all
 select null as id1, 1 as id2, 'Alpha' as id3 union all
 select null as id1, 2 as id2, 'Beta'  as id3 union all
 select 'A'  as id1, 2 as id2,  null   as id3
 )s
 group by id2;

OK
A       1       Alpha
A       2       Beta
Time taken: 58.739 seconds, Fetched: 2 row(s)

现在我尝试实现你的逻辑,就像你描述的那样:

代码语言:javascript
复制
select --pass2
 id1, id2, id3,
 case when lag(id2) over (order by id2, GroupId) = id2 then lag(GroupId) over (order by id2, GroupId) else GroupId end GroupId2
 from
 (
 select        --pass1
 id1, id2, id3,
 case when 
 lag(id1) over(order by id1, NVL(ID1,ID3)) =id1 then lag(NVL(ID1,ID3))  over(order by id1, NVL(ID1,ID3)) else NVL(ID1,ID3) end GroupId
 from
( --your dataset as in example
 select 'A'  as id1, 1 as id2,  null   as id3 union all
 select null as id1, 1 as id2, 'Alpha' as id3 union all
 select null as id1, 2 as id2, 'Beta'  as id3 union all
 select 'A'  as id1, 2 as id2,  null   as id3
 )s
 )s --pass1
;


OK
id1     id2     id3     groupid2
A       1       NULL    A
NULL    1       Alpha   A
A       2       NULL    A
NULL    2       Beta    A
Time taken: 106.944 seconds, Fetched: 4 row(s)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49402019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档