如何编写基于另一个表过滤表的Hive查询?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写基于另一个表过滤表的Hive查询?相关的知识,希望对你有一定的参考价值。
我有两个表,表一有两列a和b,表二有两列c和d。对于表一中的每一行,如果我可以在表二中找到一行,那么a = c and substring(b, 1, 3) = substring(d, 1, 3),
然后我将这一行保留在表一中。最后,我想计算表一中有多少行。我尝试在下面写这样的查询,但我不确定它是否正确?
SELECT COUNT(1)
FROM
(SELECT One.a
FROM One
LEFT SEMI JOIN Two
ON One.a = Two.b
AND One.ds = '2018-02-27'
AND Two.ds = '2018-02-27'
AND One.c IS NOT NULL
AND Two.d IS NOT NULL
AND SUBSTR(One.c, 1, 3) = SUBSTR(Two.d, 1, 3)
GROUP BY One.a) subquery
答案
由于我没有数据示例,我发现很难判断您的代码是否正确。但是,正如我所看到的那样,你想根据两个条件加入,对吗?
前段时间我看到了这个:Hive Query- Joining two tables on three joining conditions with OR operator
我认为他们有一些不同的选择。我对你所拥有的内容提出了类似的问题,并且发现答案非常有用!
以上是关于如何编写基于另一个表过滤表的Hive查询?的主要内容,如果未能解决你的问题,请参考以下文章
PHP/SQL - 如何过滤掉与另一个表的数据有冲突的记录?