【问题标题】:Select non duplicate records from a hive join query从配置单元连接查询中选择不重复的记录
【发布时间】:2016-07-15 00:38:35
【问题描述】:

我有以下 Hive 查询:

select *
from A
left outer join B
on A.ID = B.ID
where B.ID IS NULL 

结果产生重复数据,但我只需要非重复记录。

经过一番研究,我尝试了以下查询:

select *
from (
    select *
    from A
    left outer join on B
    where A.ID = B.ID AND B.ID IS NULL ) join_result
group by jojn_result.ID

显示不明确的列引用 ID 错误。

我没有表 A 的列名。

请帮我找出解决办法。

谢谢。

【问题讨论】:

  • 请提供样本数据和预期结果...
  • 我使用了相同的查询,除了在 ON 子句周围使用括号并成功地从表 A select * from A left outer join B on (A.ID = B.ID) 中获取记录其中 B.ID 为空

标签: sql hadoop join hive hiveql


【解决方案1】:

嗯。 . . select怎么样:

Select A.*
from A left outer join
     B
     on A.ID = B.ID
where B.ID IS NULL;

我删除了 B 列,因为它们不需要。

【讨论】:

  • 谢谢戈登。 hive 版本 0.14 不支持 Distinct。我对源系统有问题,这就是我得到重复的原因。我刚刚删除了它的工作原理
【解决方案2】:

您的某个连接列可能具有NULL 值。只要在任何连接键值中有NULL,它就会跳过该列。在使用NVLCOALESCE 加入时,尝试用一些默认值替换NULL。我一直在寻找相同的答案,并在这里看到了您的帖子。但没有解决办法。但是因为我找到了解决方案,所以我只想在这里发布,以便有人可以受益。

select *
from A
left outer join B
on coalesce(A.ID,000) = coalesce(B.ID,000)
where B.ID IS NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2021-05-16
    相关资源
    最近更新 更多