如何在presto中将列转换为数组

Posted

技术标签:

【中文标题】如何在presto中将列转换为数组【英文标题】:how to convert a column to an array in presto 【发布时间】:2021-10-20 23:41:00 【问题描述】:

Postgres 提供了一种将列转换为数组的方法。示例查询:

WITH
    dataset AS (
        SELECT '1' as a
        union
        SELECT '2' as a
        union
        SELECT '3' as a
    )
SELECT
    array(select a from dataset) as array_result;

返回

| array_result |
|--------------|
| 2,3,1      |

如何使用 Presto SQL 做同样的事情?

【问题讨论】:

【参考方案1】:

使用array_agg(x [ORDER BY y])聚合函数:

WITH
    dataset AS (
        SELECT '1' as a
        union all
        SELECT '2' as a
        union all
        SELECT '3' as a
    )
SELECT
    array_agg(a) as array_result from dataset;

结果:

['3', '2', '1']

如果需要array<int>,请在聚合前强制转换:array_agg(cast(a as int))

【讨论】:

以上是关于如何在presto中将列转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Presto 中将时间戳转换为日期?

如何在 Presto Athena 中将 varchar 转换为数组

在 athena/presto 中将数组(varchar)转换为 varchar

如何在 presto 中将 varchar 转换为 MAP(VARCHAR,VARCHAR)

在presto MySQL中将时间戳转换为字符串?

如何在 Presto/Hive 中将日期格式 YYYY-MM-DD 转换为整数 YYYYMMDD?