У меня следующий запрос:
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()
, поэтому, если бы что-то подобное было в HiveQL, я бы сделал что-то вроде case when col1.indexOf("b") = col1.indexOf("c") - 1
.
. Я прочитал документацию, и кажется, что функции, связанные с массивами, минимальный.
Я не хотел бы разбивать массив и проверять с помощью LAG
или LEAD
.
Я пробовал с field("c", concat_ws(',',col1))
, но, похоже, это тоже не сработало.