我无论如何也想不出如何在短时间内做到这一点。查询后,我有两个聚合数组a和b。我想弄清楚如何将数组的每个索引转换为一个映射,为a和b中的每个值提供静态标签。
参见下面的示例。我在Presto文档中尝试了所有不同的数组映射函数,但似乎无法弄清楚。任何想法吗?
注意:a和b的长度总是相同的,但可以在1到10的长度之间变化
输入
select
array_agg('a','b','c') as a,
array_agg(1,2,3) as b
from etc...
变成
<表类>b tbody><<tr>[' a ', ' b ', ' c '] (1、2、3) 表类>
不确定是否可以创建包含不同类型作为值的映射,但是可以压缩数组并将结果转换为带有命名字段的行:
SELECT transform(
zip(a, b),
r -> cast(r AS ROW(static_label_char CHAR, static_label_num SMALLINT)))
FROM
(SELECT ARRAY['a','b','c'] AS a, ARRAY[1,2,3] AS b)
输出:
<表类>_col0 [{static_label_char=a, static_label_num=1}, {static_label_char=b, static_label_num=2}, {static_label_char=c, static_label_num=3}] 表类>