在 presto 中加入/联合以将电子邮件保留在一列中
Posted
技术标签:
【中文标题】在 presto 中加入/联合以将电子邮件保留在一列中【英文标题】:join / union in presto to keep email in one column 【发布时间】:2019-01-22 14:08:21 【问题描述】:我正在尝试在 presto 中将两个表连接在一起,
select o.email
, o.user_id
, c.email
, c.sessions
from datasource o
full join datasource2 c
on o.email = c.email
这会产生:
email user_id email sessions
jeff@sessions.com 123 NULL NULL
mike@berkley.com 987 NULL NULL
jared@swiss.com 384 jared@swiss.com 14
steph@berk.com 333 NULL NULL
NULL NULL lisa@hart.com 12
问题是我想使用email
对多个数据源进行多个连接,我能想到的唯一解决方法是将其用作子查询,并创建一个包含一个的新列,如果null,取另一个,然后在 datasource3 上执行完全连接,冲洗重复。
【问题讨论】:
【参考方案1】:您想使用 COALESCE,它将选择两个值中的非空值。 COALESCE 对很多事情都非常有用。它可以采用两个以上的值,并将返回它获得的第一个非 NULL 值。如果它们都为 NULL,它将简单地返回 NULL。
SELECT
COALLESCE(o.email, c.email) AS email
, o.user_id
, c.sessions
FROM datasource o
FULL JOIN datasource2 c
ON o.email = c.email
有关 COALESCE 的官方文档,请参见此处: https://prestodb.io/docs/current/functions/conditional.html
【讨论】:
以上是关于在 presto 中加入/联合以将电子邮件保留在一列中的主要内容,如果未能解决你的问题,请参考以下文章