在 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 中加入/联合以将电子邮件保留在一列中的主要内容,如果未能解决你的问题,请参考以下文章

仅在时间戳中保留日期,同时在另一个表中加入日期

如何在 SQL Server 中加入两个查询的结果?

Presto 多表连接和广播连接分布

在 AWS Glue 中加入操作后删除具有相同名称的重复字段

Kibana:在表格可视化中加入两个文档

在HTML中怎么加入背景音乐