连接两个数据,如果有连接,则从第二个表中选择列

时间:2020-06-03 11:41:45

标签: apache-spark-sql

我要加入两个具有相同架构的数据集。一个表是另一个表的子集。我想保留第一个表中的所有记录,并在有联接的情况下从第二个表中获取几列。如果没有联接,则保留第一个表中的所有列。

这是我正在使用的查询

select 
first.id,
first.date,
first.pdate,
CASE WHEN first.id = second.id then second.des else first.des end as des,
CASE WHEN first.id = second.id then second.flg else first.flg end as flg,
first.string1,
first.string2
from first left join second on first.id = second.id

first datset
1|2019-01-01|20191215|MARKET BASKET XXXXXXXX   SWXXXEY      NH|000|MARKET BASKET 00000646   SWANZEY      NH|US
2|2019-01-01|20191215|MARKET NH|000|MARKET BASKET 00000646   SWANZEY      NH|US

second dataset
1|2019-01-01|20191215|MARKET BASKET XXXXXXXX   SWANZEY      NH|000|MARKET BASKET 00000646   SWANZEY      NH|US


expected output
1|2019-01-01|20191215|MARKET BASKET XXXXXXXX   SWANZEY      NH|000|MARKET BASKET 00000646   SWANZEY      NH|US
2|2019-01-01|20191215|MARKET NH|000|MARKET BASKET 00000646   SWANZEY      NH|US

但是这不起作用,因为我从有连接的第一个表中获取数据。

1 个答案:

答案 0 :(得分:0)

尝试使用CASE WHEN代替您的COALESCE

COALESCE(second.des,first.des) as des,
COALESCE(second.flg,first.flg) as flg,
相关问题