AWS Athena:将逗号分隔的字符串转换为行

Dan*_*lan 2 sql presto amazon-athena

在AWS Athena中,我想编写如下查询:

SELECT some_function('row1,row2,row3');
Run Code Online (Sandbox Code Playgroud)

再回来

row1
row2
row3
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

我知道我可以改写这个,但这对我来说不太方便:

select * from (values ('row1'), ('row2'), ('row3'))
Run Code Online (Sandbox Code Playgroud)

Dai*_*rom 6

您可以使用split函数将字符串转换为数组,然后UNNEST将数组转换为行。例如:

WITH t AS (
    SELECT 'row1,row2,row3' AS data
)
SELECT value
FROM t
CROSS JOIN UNNEST(split(t.data, ',')) as x(value)
Run Code Online (Sandbox Code Playgroud)
 value 
-------
 row1  
 row2  
 row3  
(3 rows)
Run Code Online (Sandbox Code Playgroud)