在PrestoDB中使用地图

时间:2018-07-26 23:45:30

标签: presto

我正在尝试使用Presto的地图功能,但遇到了一些困难。希望有人能让我挺直。

我有一个表map_table,其中有两列kv,我想将它们转换成地图以用于查询。

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表达式内调用子查询。

那我该怎么办?我只是在软管吗?

1 个答案:

答案 0 :(得分:1)

不确定我是否完全遵循该问题,但有一些建议。对于start CTE,请使用my_map。对于其余的内容,我认为您只想将地图附加到map_agg的每一行,因此可以将其用作查找。因此,类似:

second_table