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是布尔运算符,当
检查布尔值时,