我知道 Hive for Hadoop 不支持不等式连接。但是,我有一个似乎运行正常的查询。至于结果是否正确,我很怀疑,因为我有一个同事与我分享了这个结果,但他发现它没有产生正确的结果。
这里是:
select foo.id, count(foo.*) as foo_vol, count(bar.*) as bar_vol
from foo
left outer outer join bar
on foo.id = bar.id
and (bar.f2 in (x, y, z)) = FALSE
group by foo.id
有人知道为什么这解释并运行正常吗?不平等连接的问题实际上与条件是否使用连接两侧的字段有关吗? FB/apache 是否已确认此类查询将产生错误结果?
为任何帮助干杯, 马特
最佳答案
据我所知,您的查询确实是 eque join : foo.id = bar.id
条件:(bar.f2 in (x, y, z)) = FALSE 仅应用于条形表,不应被视为连接的一部分。
在 hive 中没有限制在表字段上放置不相等的条件。
关于join - HiveQL 不等式连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11932563/