开发者社区> 问答> 正文

INNER JOIN和ANTI JOIN有什么区别?

我对PySpark中的连接术语感到很困惑。我将列出我如何理解其中两个联接,我只是想知道我的理解是否正确,因为我发现文档更令人困惑而不是有用。

我们从两个数据帧开始:dfA和dfB。

dfA.join(dfB, 'user', 'inner')
意味着只加入用户列中的行dfA和dfB公共元素。(用户列上A和B的交叉点)。

dfA.join(dfB, 'user', 'leftanti')
装置构造一个数据帧的元素中dfA 未中dfB。

这两个是正确的吗?

展开
收起
社区小助手 2018-12-21 11:15:06 8308 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    inner join =>如果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;

    2019-07-17 23:23:19
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Lazy Join Optimizations Without Upfront Statistics 立即下载
Lazy-Join Optimizations withou 立即下载
低代码开发师(初级)实战教程 立即下载