我有以下表格:
Table1
:
user_name Url
Rahul www.cric.info.com
ranbir www.rogby.com
sahil www.google.com
banit www.yahoo.com
Table2
:
Keyword category
cric sports
footbal sports
google search
我想通过匹配Table1
中的关键字来搜索Table2
。我可以执行相同的使用case语句并且查询可以正常工作,但这不是正确的方法,因为每次我必须在添加新搜索关键字时添加case语句。
select user_name from table1
case when url like '%cric%' then sports
else 'undefined'
end as category
from table1;
答案 0 :(得分:0)
谢谢找到这种方法的解决方案。首先我们需要进行加入,之后我们需要过滤记录。
select user_name,url,Keyword,catagory from(select table1.user_name,table1.url ,table2.keyword,table2.catagory from table1 left outer join table2)a where a.url like (concat('%',a.phrase,'%')
答案 1 :(得分:0)
不确定更多当前版本,但我遇到了类似的问题......主要问题是Hive只支持equi-join语句...当你将逻辑应用于连接的任何一侧时,它有难以转化为Map Reduce功能。
如果您具有可靠的结构化字段,则替代方法是您可以从较大字段创建匹配键。例如,如果您知道要查找的关键字存在于点分隔URI的第二个位置,则可以执行以下操作:
select
Uri
, split(Uri, "\\.")[1] as matchKey
from
Table1
join Table2 on Table2.keyword = Table1.matchKey
;