aggregate - 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
但这不起作用,因为数组需要相同类型的元素。此外,我也不想进行第二次查询来修改输出。
解决方案
正如您已经发现的那样,array
需要是同质的,具有某种类型,并且 SQL 中没有通用的超类型。匿名row
(row
带有未命名的字段)是您想要的,但这是目前打印的方式
presto> SELECT ROW(42, true, 'Presto SQL');
_col0
---------------------------------------------
{field0=42, field1=true, field2=Presto SQL}
(1 row)
您可以跟踪问题https://github.com/prestosql/presto/issues/4587以改进此问题。
推荐阅读
- php - 未找到 PDO SQL 删除语句
- javascript - 字符串比较未按预期工作
- java - Java Swing 是否具有与 ASP.NET 中的局部视图类似的功能?
- installation - 如何进行扫描文档索引
- azure - Visual Studio 2019(v:16.3.9)的 Azure 流分析中没有 SystemPropertyColumns
- spring-webflux - Spring webflux请求回调不起作用
- google-apps-script - 如何根据其他电子表格的输入在工作表中激活应用脚本功能?
- android - Android OnScrollListener 无法正常工作
- python - 从带有冒号的行中解析单词(简单的初学者作业)
- reactjs - 将 Grid 与 SortableJS 一起使用