Arrays HIVEQL中相似函数的索引
我有以下疑问:Arrays HIVEQL中相似函数的索引,arrays,hive,hiveql,Arrays,Hive,Hiveql,我有以下疑问: SELECT col1, case when array_contains(col1, "c") then "c exists" end as col2 FROM ( SELECT * FROM ( SELECT array("a","b","c") AS col1 ) q1 ) q2; 我想检查数组中元素“c”是否正好出现在元素“b”之前。
SELECT
col1,
case when array_contains(col1, "c") then "c exists" end as col2
FROM
(
SELECT
*
FROM
(
SELECT
array("a","b","c") AS col1
) q1
) q2;
我想检查数组中元素“c”是否正好出现在元素“b”之前。在JavaScript中,我可以使用indexOf()
我已经阅读了文档,似乎处理数组的函数非常少
我不想拆分数组并使用LAG
或LEAD
进行检查
我试过使用字段(“c”,concat_ws(',',,col1))
,但这似乎也不起作用。您可以连接数组并使用类似的或类似的。例如:
SELECT concat_ws(',',col1) rlike 'c,b' as c_before_b_flag
FROM
(
SELECT
array("a","b","c") AS col1
) q1
结果:
false
rlike'b,c'
给出了true
谢谢!这不是我所期望的(我对真正的索引功能非常乐观),但它确实起了作用。当(concat_ws(',',col1)rlike'b,c'=true时,我可以使用大小写,然后1或0在_c_标志之前以b_结尾。尽管如此,如果逻辑稍有变化,正则表达式解决方案还是有帮助的,例如,如果我们允许b和c之间的2或3个其他元素(f.i b,x,y,z,c)@agustin使用case当(concat_ws(',',,col1)rlike'b,c')然后1 else 0 end
true似乎是多余的,rlike是布尔运算符,当
检查布尔值时,