【问题标题】:How to do a conditional join in hive如何在 hive 中进行条件连接
【发布时间】:2017-01-07 02:37:37
【问题描述】:

我有两个 hive 表,只有当两个表中都有数据时,我才想做一个连接。如果其中一张表为空,我不希望发生连接。 我尝试探索案例陈述,目的是我会做类似的事情

select count(*) as val 
case
 when val > 0 then <do join of table1 and table2 here>
 else
   <do nothing>
end
from table2

但是看起来 hive 不允许在 case 语句中执行评估,所以这种方法不起作用。任何人都对如何在 hive 中执行此操作有任何意见。

【问题讨论】:

  • 你可以试试 Table1 和 Table2 之间的左外连接。
  • 没有 SQL 有这个功能。我会将您的逻辑插入脚本中:计算两个表的记录。如果两个计数器>0 加入
  • @rajat 左外连接仍将导致连接操作。我的需要是在不需要时完全消除加入
  • @user2051590 那么我想你需要打破这些步骤并将belostoky建议的逻辑写入脚本并执行它。

标签: hive hiveql


【解决方案1】:
select *
from TableA as a
left join TableB as b
on b.A_Id = a.A_Id
where
    b.A_Id is not null or
    not exists (select top 1 A_Id from TableB)

这是我遇到的Source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2016-08-01
    相关资源
    最近更新 更多