Arrays 在联接表上获取数组的匹配值

Arrays 在联接表上获取数组的匹配值,arrays,join,presto,Arrays,Join,Presto,我目前在一个Presto数据库中,在表a上有一个ID数组:[a,B,C,D] 如何使用下面的联接映射表B返回具有相应颜色的数组?[红色、黄色、蓝色、棕色] 我计划取消数组的测试,然后执行连接,但我已经在处理很多列,所以我想知道是否有更简单的方法 谢谢 数组函数可用于连接条件。这对我来说也不是很明显,但它使编写您想要的查询变得非常简单。例如: 选择 用户颜色。用户id, 数组\u AGGcolor\u lookup.color 从用户颜色 在容器上加入颜色查找suser\u colors.colo

我目前在一个Presto数据库中,在表a上有一个ID数组:[a,B,C,D]

如何使用下面的联接映射表B返回具有相应颜色的数组?[红色、黄色、蓝色、棕色]

我计划取消数组的测试,然后执行连接,但我已经在处理很多列,所以我想知道是否有更简单的方法


谢谢

数组函数可用于连接条件。这对我来说也不是很明显,但它使编写您想要的查询变得非常简单。例如:

选择 用户颜色。用户id, 数组\u AGGcolor\u lookup.color 从用户颜色 在容器上加入颜色查找suser\u colors.color\u id,color\u lookup.id 按用户\u颜色分组。用户\u id 假设user_colors是包含颜色ID数组的表,那么您的表a

在写了上面的内容之后,我开始思考一定有一种方法可以基于查找表获得地图。还有!虽然,这有点奇怪,因为据我所知,它必须无条件地连接到每一行。结构为子选择,如下所示:

选择 TRANSFORMcolor\u ID,x->color\u映射[x] 从表格 参加 选择“贴图”\u AGGid,“颜色”作为“颜色”\u贴图 从表B 论1=1 但也可以将其结构化为CTE或带有以下条款:

使用颜色查找作为 选择“贴图”\u AGGid,“颜色”作为“颜色”\u贴图 从表B 选择 TRANSFORMcolor\u ID,x->color\u映射[x] 从表格 在1=1时加入颜色查找
|  ID  | color  |
|---------------+
|  A   | red    |
|  B   | yellow |
|  C   | blue   |
|  D   | brown  |