如何将AWS Athena中的JSON数组输出转换为逗号分隔字符串
解决AWS Athena中将JSON数组转换为逗号分隔字符串的问题
你的问题核心在于,JSON_EXTRACT返回的是表示JSON数组的字符串类型值(比如["item0","item1",...]),而不是Athena原生的数组类型,直接用array_join会因为参数类型不匹配而失败。
正确的解决方案
需要先把JSON字符串解析为Athena原生的数组类型,再使用array_join进行拼接。有两种常用方式:
方式1:使用CAST转换类型
WITH dataset AS ( SELECT array_join(CAST(JSON_EXTRACT(message, '$.items') AS ARRAY(VARCHAR)), ',') AS Items FROM kafka.database ) SELECT * FROM dataset LIMIT 10
方式2:使用JSON_PARSE解析JSON
JSON_PARSE可以直接把JSON格式的字符串转换为对应的Athena数据类型(这里会转成数组),代码更简洁:
WITH dataset AS ( SELECT array_join(JSON_PARSE(JSON_EXTRACT(message, '$.items')), ',') AS Items FROM kafka.database ) SELECT * FROM dataset LIMIT 10
为什么之前的尝试失败?
你之前直接对JSON_EXTRACT的结果调用array_join,但array_join的第一个参数要求是Athena原生的数组类型,而不是JSON字符串。而json_array_get能成功是因为这个函数本身支持接收JSON格式的字符串作为输入,不需要提前转换类型。
内容的提问来源于stack exchange,提问作者dgomez
相关产品推荐
相关产品推荐

