首页 > 解决方案 > Presto / AWS Athena:在 SELECT 中创建不同类型的数组

问题描述

我目前有一个如下所示的 AWS Athena 查询:

SELECT array_agg(ROW(n.stop_sequence, n.stop_name, n.stop_lat, n.stop_lon))
FROM ...
GROUP BY ...

现在的输出如下所示:

[{field0=39, field1=Name, field2=41.838512, field3=12.437013}, {field0=...,...},...]

有没有办法修改(而不是进行另一个查询来修改当前输出)SELECT以某种方式使输出看起来像这样?

[[39, Name, 41.838512, 12.437013}, [...],...]

我尝试使用ARRAY而不是,ROW但这不起作用,因为数组需要相同类型的元素。此外,我也不想进行第二次查询来修改输出。

标签: aggregateprestoamazon-athena

解决方案


正如您已经发现的那样,array需要是同质的,具有某种类型,并且 SQL 中没有通用的超类型。匿名rowrow带有未命名的字段)是您想要的,但这是目前打印的方式

presto> SELECT ROW(42, true, 'Presto SQL');
                    _col0
---------------------------------------------
 {field0=42, field1=true, field2=Presto SQL}
(1 row)

您可以跟踪问题https://github.com/prestosql/presto/issues/4587以改进此问题。


推荐阅读