我正在尝试使用Presto的地图功能,但遇到了一些困难。希望有人能让我挺直。
我有一个表map_table
,其中有两列k
和v
,我想将它们转换成地图以用于查询。
WITH my_map AS(
SELECT map(
(SELECT array_agg(k) FROM map_table),
(SELECT array_agg(v) FROM map_table)
) as m
)
SELECT
transform(
list_column,
x -> my_map[x]
) as stuff
FROM
second_table
这显然是行不通的,因为从技术上讲,我必须(SELECT m FROM my_map)
,而不是直接在查询中通过其名称直接调用CTE。但是后来我不允许在lambda表达式内调用子查询。
那我该怎么办?我只是在软管吗?
答案 0 :(得分:1)
不确定我是否完全遵循该问题,但有一些建议。对于start
CTE,请使用my_map
。对于其余的内容,我认为您只想将地图附加到map_agg
的每一行,因此可以将其用作查找。因此,类似:
second_table