连接操作_连接类型_semi&;anti | 学习笔记

简介: 快速学习连接操作_连接类型_semi&;anti

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:连接操作_连接类型_semi&;anti】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12101


连接操作_连接类型_semi&;anti

 

连接类型

本节课介绍最后两种连接方式,一种是 Leftsemi,一种是 Leftanti

如果有两个表,一个是员工表,一个是部门表,现在要查看已经入职但未分配部门的员工,只需要判断员工表中部门 Id 是否为空。

但有时这种方法不一定准确,异常情况:假如张三由部门 A 调到部门 B,张三档案有部门 ID 但是一个临时部门,但部门 A 已经不再关联张三。做法:进行连接,查看张三是否连上,连不上就显示出来。

集合示意图:

image.png

中间相交部分是能连接上的数据,但是要求在结果集中不显示此部分,只显示左侧未连接上的部分,这种连接是 LeftAnti

如果显示的是左侧连接上的数据,这种连接 LeftSemi

1.Leftanti

LeftAnti 是一种特殊的连接形式,和左外连接类似,但是其结果集中没有右侧的数据,只包含左边集合中没连接上的数据,如图:

image.png

2. Leftsemi

和 LeftAnti恰好相反,LeftSemi 的结果集也没有右侧集合的数据,但是只包含左侧集合中连接上的数据,如图:

image.png

LeftAnti 和 LeftSemi 的共同点:都不显示右侧数据

编写代码:

@Test

def leftAntiSemi() : unit = {

//左连接 anti

person.join(cities,

person.col( colName = "cityId" ) === cities.col( colName = "id""),

joinType = "leftanti")

.show()

/sql 语句

spark.sql( sqlText = "select p.id, p.name " +

"from person p left anti join cities c ”+

"on p.cityId = c.id" )

.show()

//右连接

person.join(cities,

person.col( colName = "cityId" ) === cities.col( colName = "id""),

joinType = "Leftsemi")

.show()

/sql 语句

spark.sql( sqlText = "select p.id, p.name " +

"from person p left semi join cities c ”+

"on p.cityId = c.id" )

.show()

}

运行代码得到结果集:

image.png

LeftAnti 结果集

image.png

显示左侧未连接上的Danial数据。

LeftSemi 结果集:

image.pngimage.png

总结:

LeftAnti 是只显示左侧未连接上的数据,LeftSemi 是只显示左侧连接上的数据,共同点是都不显示右侧数据。

相关文章
|
Kubernetes 应用服务中间件 nginx
Kubernetes 入门指南:快速上手容器编排
【8月更文第29天】Kubernetes(简称 K8s)是一个开源平台,用于自动化容器化应用程序的部署、扩展和管理。它提供了一种便捷的方式来部署和运行应用程序,而无需关心底层基础设施的细节。本指南将带你从零开始学习 Kubernetes 的基础知识,并帮助你部署第一个应用。
612 1
|
7月前
|
传感器 人工智能 Java
通义灵码新功能体验
最近体验了通义灵码的新功能,尤其是新增的智能体模式,让AI编程助手跃升新高度。它支持自主决策、环境感知和工具利用,可从零开发应用。例如创建Spring Boot项目,只需描述需求,它便生成所需文件并提供启动建议。集成MCP工具后,能调用2400多个服务,快速定位配置文件。更新还增强了记忆能力,根据用户习惯优化响应,加入Qwen3模型提升复杂任务处理效率。此外,上下文支持工程目录和多文件选择,进一步提高重构效率。对于开发者来说,这是一次极具吸引力的升级。
|
8月前
|
自然语言处理 运维 DataWorks
智能体Agent解析:用自然语言重构数据开发工作方式
大数据开发治理平台DataWorks基于MCP协议,正式发布了DataWorks Agent,内置DataWorks MCP Server V1.0。该功能支持在DataWorks Data Studio中通过自然语言交互完成数据开发任务,实现了需求即代码的开发体验。本文将详细介绍如何通过配置使用DataWorks MCP Server进行任务的开发和运维管理。
BOSHIDA 模拟电源与数字电源之间的区别
BOSHIDA 模拟电源与数字电源之间的区别 模拟电源与数字电源是两种不同的电源类型,其核心区别在于电源控制方式和输出特性。本文将从这两方面对模拟电源和数字电源进行比较和分析。
BOSHIDA 模拟电源与数字电源之间的区别
|
编解码 Linux
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是开源的MPEG-4视频编解码器,曾与DivX一起用于早期MP4视频编码,但现在已被H.264取代。要集成XviD到Linux上的FFmpeg,首先下载源码,解压后配置并编译安装libxvid。接着,在FFmpeg源码目录中,重新配置FFmpeg以启用libxvid,然后编译并安装。成功后,通过`ffmpeg -version`检查是否启用libxvid。详细步骤包括下载、解压libxvid,使用`configure`和`make`命令安装,以及更新FFmpeg配置并安装。
393 2
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
|
SQL 存储 关系型数据库
从Hive建表语句到MySQL的转换
【8月更文挑战第11天】
778 7
|
SQL 存储 关系型数据库
COALESCE 函数:SQL中的空值处理利器
【8月更文挑战第31天】
7124 0
|
jenkins 持续交付 项目管理
如何在 Git 中推送空提交
【7月更文挑战第6天】
399 0
如何在 Git 中推送空提交
|
存储 消息中间件 Java
Java一分钟之-Spring Cloud Config:外部化配置
【6月更文挑战第8天】Spring Cloud Config提供外部化配置,通过Config Server管理和版本控制微服务配置。本文涵盖Config Server与Client的配置、常见错误、多环境配置、实时更新及使用示例。注意配置服务器URL、环境变量设置、Bus配置以及安全问题。使用Config能提升系统灵活性和可维护性,但要留意日志以确保配置正确和安全。
318 10
|
存储 人工智能 C++
【PTA】L1-093 猜帽子游戏(C++)
【PTA】L1-093 猜帽子游戏(C++)
333 1