Hive - 如何将数组转换为字符串?

Posted

技术标签:

【中文标题】Hive - 如何将数组转换为字符串?【英文标题】:Hive - How to cast array to string? 【发布时间】:2018-09-24 16:13:30 【问题描述】:

我正在尝试将包含逗号分隔数组的列强制转换为 Hive 中的字符串。

SELECT email_address, CAST(explode(GP_array AS STRING)) AS GP
FROM dm.TP

我收到以下错误

第 1 行 - 失败:SemanticException [错误 10081]:在 SELECT 子句之外不支持 UDTF,也不支持嵌套在表达式中

【问题讨论】:

【参考方案1】:

explode 函数 将数组分解为多行。返回具有单列 (col) 的行集,数组中的每个元素对应一行。

您需要 concat_ws 函数将逗号分隔的数组值连接到字符串。

函数:concat_ws(string SEP, array)

参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

SELECT email_address, concat_ws(',', GP_array) AS GP FROM dm.TP

concat_ws 将返回由数组值构造的逗号分隔字符串

【讨论】:

以上是关于Hive - 如何将数组转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组<string>转换为hive中的字符串

如何将字符串转换为hive中的struct数组并进行爆炸?

我们如何在 hive 中将字符串转换为数组?

Hive数组的字符串转换为int数组

如何将字符串转换为配置单元中的结构数组并爆炸?

将数组<字符串>转换为字符串[重复]