Отличное значение для типа массива, который является строкой?

55
7

У меня есть поле, где строки выглядят примерно так:

["apples", "pears", "grapes"]
["apples"]
["pears", "bananas", "grapes"]

Когда я describe mytable поле является строковым типом.

В отличие от select distinct myfield я ищу способ выбора отдельных значений после разделения, что-то вроде:

select distinct split(myfield, ',')

Есть ли способ сделать это в Hive SQL?

спросил(а) 2018-10-15T23:17:00+03:00 1 год, 8 месяцев назад
1
Решение
54

Вы можете сделать это следующим образом. Вам нужно будет replace скобки и split по запятой, чтобы получить массив. После этого вы можете взорвать свой массив.

select distinct(explodedfield) 
from mytable
lateral view
explode(split( replace(replace(myfield,"]",""),"[","") , ",") )
f as explodedfield;

Если вы хотите также заменить кавычки, вы можете взглянуть на этот ответ. Как мы преобразуем строку в массив в улье?

ответил(а) 2018-10-16T04:13:00+03:00 1 год, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема