INNER JOIN和ANTI JOIN

时间:2018-12-14 11:21:35

标签: sql apache-spark pyspark pyspark-sql

我对PySpark中的连接术语完全感到困惑。我将列出我对这两个连接的理解,我只是想知道我的理解是否正确,因为我发现文档比帮助更令人困惑。

我们从两个数据帧开始:dfAdfB

dfA.join(dfB, 'user', 'inner') 

装置仅连接dfAdfB在用户列上具有相同元素的行。 (用户列上A和B的交集)。

dfA.join(dfB, 'user', 'leftanti') 

是指使用dfA中的元素dfB中的元素构造一个数据框。

这两个正确吗?

1 个答案:

答案 0 :(得分:1)

内部联接=>如果DFB没有DFA记录,则它不返回不匹配的记录。

left anti =>最接近“不存在”

-- NOT EXISTS
SELECT *
FROM dfA
WHERE NOT EXISTS (
  SELECT 1
  FROM dfB
  WHERE dfA.DeptName = dfB.DeptName
)

等效于LEFT OUTER JOIN

SELECT * 
FROM dfA
LEFT OUTER JOIN DFB
  ON dfA.DeptName = dfB.DeptName
where dfB.DeptName IS NULL;