将数组 Athena 转换为字符串

问题描述 投票:0回答:1

我目前在 Athena 中有一个 JSON 输出作为数组:

这是我正在运行的查询

WITH dataset AS (SELECT
Items
FROM
(SELECT * FROM (
    SELECT
    JSON_EXTRACT(message, '$.items') AS Items
   FROM kafka.database
   )))
select * from dataset
LIMIT 10

这是当前的输出

["item0","item1","item2","item3"]

但想以这种方式从 AWS Athena 生成输出:

"item0,item1,item2,item3"

我尝试按照 Athena 文档中的步骤进行操作,但它不起作用:

WITH dataset AS (SELECT
Items
FROM
(SELECT * FROM (
    SELECT
    array_join(JSON_EXTRACT(message, '$.items'),' ') AS Items
   FROM kafka.database
   )))
select * from dataset
LIMIT 10

但是例如,通过这种方式,我可以选择 JSON 输出中的第一个项目。


WITH dataset AS (SELECT
Items
FROM
(SELECT * FROM (
    SELECT
    json_array_get(JSON_EXTRACT(message, '$.items'),0) AS Items
   FROM kafka.database
   )))
select * from dataset
LIMIT 10
sql amazon-web-services amazon-athena presto trino
1个回答
3
投票

JSON_EXTRACT
不返回
array
,它返回
json
类型的值,因此不支持直接将其作为数组进行操作。处理它的一种方法是将其转换为
array(varchar)
并在其上使用
array_join

-- sample data
WITH dataset (json_arr) AS (
   VALUES (json '["item0","item1","item2","item3"]')
)

-- query
select array_join(cast(json_arr as array(varchar)), ', ')
from dataset;

输出:

_col0
项目0、项目1、项目2、项目3
© www.soinside.com 2019 - 2024. All rights reserved.