[英]SQL query/Spark dataframe to outer join and subtract values of two tables
我希望基於“名稱”對兩個表A和B進行外部聯接,然后減去“計數”列的值,如果該行在另一個表中不存在,則將其替換為0。 有誰知道一個簡單的SQL查詢使之成為可能?
A
name count
ABC 10
DEF 10
GHI 20
B
name count
ABC 20
GHI 30
XYZ 10
RESULT
name count
ABC -10
DEF 10
GHI -10
XYZ -10
謝謝!
(或者,如果有一種方法可以通過Spark DataFrames做到這一點,那就更好了!)
使用spark
,可以將name
列上的兩個數據框coalesce
null
計數coalesce
為零,然后將A.count
與B.count
相減:
(A.alias("a").join(B.alias("b"), Seq("name"), "outer")
.selectExpr("name", "coalesce(a.count, 0) - coalesce(b.count, 0) as count")).show
+----+-----+
|name|count|
+----+-----+
| DEF| 10|
| GHI| -10|
| XYZ| -10|
| ABC| -10|
+----+-----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.