如何在配置单元 sql 中将数组转换为字符串?
How can I convert array to string in 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
使用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)并且不想分解它以将元素类型转换为字符串,另请阅读这个关于替代方法的答案:
有时,您可能需要一个 JSON 格式的列表,因此您可以简单地使用:
SELECT CAST(COLLECT_SET(date) AS STRING) AS dates FROM actor_table
PS:我需要这个,但只发现你关于数组到字符串转换的问题。
我想在配置单元中将数组转换为字符串。我想将 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
使用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)并且不想分解它以将元素类型转换为字符串,另请阅读这个关于替代方法的答案:
有时,您可能需要一个 JSON 格式的列表,因此您可以简单地使用:
SELECT CAST(COLLECT_SET(date) AS STRING) AS dates FROM actor_table
PS:我需要这个,但只发现你关于数组到字符串转换的问题。