Hive 检查配置单元数组中的所有元素是否都包含字符串模式

Hive 检查配置单元数组中的所有元素是否都包含字符串模式,hive,hiveql,Hive,Hiveql,我在一个配置单元表中有两列,如下所示: code codeset AB AB123,MU124 LM LM123,LM234 我需要验证代码集列中的所有元素都包含代码列中的值,因此在上面的示例中,第一行为false,第二行为true 有没有一个简单的方法可以做到这一点,我错过了?我已经读过关于array_contains的内容,但是如果只有一个元素匹配,则返回true,我需要所有元素都包含代码列中的内容 提前感谢。拆分字符串,分解并使用横向视图取消分割数据。然后使用l

我在一个配置单元表中有两列,如下所示:

code    codeset
AB      AB123,MU124
LM      LM123,LM234
我需要验证代码集列中的所有元素都包含代码列中的值,因此在上面的示例中,第一行为false,第二行为true

有没有一个简单的方法可以做到这一点,我错过了?我已经读过关于array_contains的内容,但是如果只有一个元素匹配,则返回true,我需要所有元素都包含代码列中的内容

提前感谢。

拆分字符串,分解并使用横向视图取消分割数据。然后使用locate检查拆分代码集是否包含使用group by和having完成的每个代码

选择a.pattern,b.listOfInputs from select*from select a.pattern,inputCount=sumPatternMatchResult时的大小写,然后选择true else false end finalResult from select pattern,sumPatternMatchResult作为sumPatternMatchResult from select pattern,位置pattern时的大小写,输入=0然后1其他0结束模式匹配结果来自选择模式,explodesplitlistOfInputs,','作为tbla b分组模式a的输入连接选择模式,countinput inputCount来自选择模式,explodesplitlistOfInputs,','作为a.pattern=b.pattern c上模式b的tbla组输入,其中finalResult=truea连接从a.pattern=b.pattern上的tbl b选择*

这也行得通

表的列映射详细信息:

代码->模式

代码集->输入列表

select code,codeset
from tbl
lateral view explode(split(codeset,',')) t as split_codeset
group by code,codeset
having sum(cast(locate(code,split_codeset)>0 as int))=count(*)