如何检查配置单元表列

时间:2018-04-17 00:24:38

标签: hive hiveql

我正在使用包含Hive-0.13.1的Cloudera集群进行日常活动。

我的字符串模式很少,我需要找出Hive表中其中一列中是否存在这些模式。

示例:我所拥有的字符串模式是板球运动员的简称,例如" Dravid"," Sachin"," Ganguly"。我在配置单元中有一个列,其中包含所有板球运动员的全名。

select full_name from players limit 3;

Rahul Dravid
Sachin Ramesh Tendulkar
Sourav Ganguly

我需要将我的字符串模式与我的查询返回的值进行比较,并使用" Y"创建另一列。如果匹配或与#34; N"如果它不匹配。

除了Regex之外,如何编写Hive查询来实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以将个案陈述一样使用,或使用

在下面的查询中,我在full_name字段中使用了 lower function ,并将字段中的数据与较低的名称(dravid,sachin)进行了比较。

查询: -

select full_name, 
case 
    lower(full_name) like '%dravid%' 
or 
    lower(full_name) like '%ganguly%' 
or 
    lower(full_name) like '%sachin%' 
    then 'Y' 
else 'N' 
end new_column_name 
from players limit 3;

答案 1 :(得分:0)

使用条件函数if和关系运算符RLIKE进行正则表达式匹配的@Shu答案的缩短版本:

SELECT full_name, 
if((lower(full_name) RLIKE 'dravid|sachin|ganguly'), 'Y', 'N') AS is_match
FROM players;