Улей SQL, удаляющий пустые элементы в массиве - PullRequest
0 голосов
/ 22 сентября 2018

Я не уверен, как удалить пустые элементы из массивов Hive.Для контекста у меня есть имя таблицы tbl1 с шестью столбцами (key_1, v_1, v_2, v_3, v_4, v_5).Когда я запрашиваю ниже:

SELECT 
        key1,
        array( nvl(v_1,""),
                nvl(v_2,""),
                nvl(v_3,""),
                nvl(v_4,""),
                nvl(v_4,""),
                nvl(v_5,"")) v_array

FROM
    tbl1;

Этот результат дает:

key1, v_array
1, ["a","b","c","d",""]
2, ["a","b","c","",""]
3, ["a","b","","",""]

Однако я хочу, чтобы мой результат выглядел следующим образом:

key1, v_array
1, ["a","b","c","d"]
2, ["a","b","c"]
3, ["a","b"]

1 Ответ

0 голосов
/ 22 сентября 2018

Вы можете написать пользовательский UDF, но может быть проще сделать LATERAL VIEW разнесение с последующим сбором

SELECT key1, 
      collect( val ) as v_array
FROM 
 ( SELECT key1,
          v.val as val 
   LATERAL VIEW EXPLODE( array( v1, v2, v3, v4, v5 ) ) v as val
     FROM tbl1
   WHERE val is not null
 ) lve ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...