presto - 在 Presto 中使用地图
问题描述
我正在尝试使用 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 表达式中调用子查询。
那么我在这里做什么呢?我只是被灌输了吗?
解决方案
不确定我是否完全遵循这个问题,但有一些建议。对于my_map
CTE,使用map_agg
. 其余的,我认为您只想将地图附加到 的每一行second_table
,因此您可以将其用作查找。所以,像:
WITH my_map AS(
SELECT map_agg(k,v) AS m
FROM map_table
),
second_table_with_map AS(
SELECT *, (SELECT m FROM my_map)
FROM second_table
)
SELECT
transform(
list_column,
x -> m[x]
) as stuff
FROM
second_table_with_map
推荐阅读
- android - 使用 Firebase AuthUI 检查用户是否是第一次登录
- java - 如何强制 LibGDX 在 Android 上显示分辨率?
- javascript - 即使数组已完成加载,我的数组中的某些值在我的函数中也未定义
- java - netbeans - java 模块
- d3.js - 选项卡内的 NVD3 宽度错误
- java - 抽象数据类型和 Json 映射
- css - 用 pywal 创建动态原子主题?
- python - Flask:从用户获取表单数据时数据重复
- python-3.x - 转换为 txt 时,DataFrame 条目四舍五入
- r - Rcpp try-catch,如何阻止错误消息出现?