我目前在 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
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 |