ARRAY_CONTAINS在hive中有多个值

时间:2014-09-03 13:23:29

标签: sql hive

有没有一种方便的方法在hive中使用ARRAY_CONTAINS函数来搜索数组列中的多个条目而不只是一个?所以而不是:

WHERE ARRAY_CONTAINS(array, val1) OR ARRAY_CONTAINS(array, val2)

我想写:

WHERE ARRAY_CONTAINS(array, val1, val2)

完整的问题是,当我运行脚本时,我需要从命令行参数动态读取val1val2,我通常不知道有多少值会被限制。因此,您可以认为vals是一个逗号分隔的列表(或数组),其中包含值val1val2...,我想写一下

WHERE ARRAY_CONTAINS(array, vals)

提前致谢!

3 个答案:

答案 0 :(得分:2)

有一个UDF here可以让您获取两个数组的交集。假设您的值具有结构

values_array = [val1, val2, ..., valn]

然后你可以做

where array_intersection(array, values_array)[0] is not null

如果他们没有任何共同点,则会返回[],因此[][0]将为null

答案 1 :(得分:0)

model.predict(x, ...)

数据

[“ Rainier”,“ Rendezvous CX”,“ Century Custom 4dr”,“ LeSabre Custom 4dr”,“ Regal LS 4dr”,“ Regal GS 4dr”,“ LeSabre Limited 4dr”,“ Park Avenue 4dr”,“公园大道超4dr“]

返回 是

答案 2 :(得分:-2)

选择* 从表 侧视图以arr爆炸(数组) 其中arr in(值) ;