Как преобразовать массив в строку в hive sql?

Я хочу преобразовать массив в строку в куст. Я хочу, чтобы значения массива collect_set преобразовывались в строку без [[""]].

select actor, collect_set(date) as grpdate from actor_table group by actor;

так что [["2016-07-01", "2016-07-02"]] станет 2016-07-01, 2016-07-02

Ответы

Ответ 1

Используйте функцию concat_ws(string delimiter, array<string>) для объединения массива:

select actor, concat_ws(',',collect_set(date)) as grpdate from actor_table group by actor;

Если поле даты не является строкой, преобразуйте его в строку:

concat_ws(',',collect_set(cast(date as string)))

Прочтите также этот ответ об альтернативных способах, если у вас уже есть массив и вы не хотите его взламывать: Как объединить элементы массива int в строку в Hive