С переменной:
set hivevar:n=3; --variable, you can pass it to the script
with your_table as(
select stack(2,"abc:def:ghi:jkl", "jkl:mno:23ar:stu:abc:def:ghi:7345")as data
)
select regexp_replace(regexp_extract(data,'([^:]*:){1,${hivevar:n}}',0),':$','') from your_table;
Результат:
OK
abc:def:ghi
jkl:mno:23ar
Time taken: 0.105 seconds, Fetched: 2 row(s)
Квантор {1,${hivevar:n}}
после замены переменной станет {1,3}
, что означает от 1 до 3 раз, это позволяет извлекать значения короче 3. Если вам не нужно извлекать более короткие значения, используйте квантификатор {${hivevar:n}}
. Если элементов меньше N, в этом случае будет извлечена пустая строка.