文档

多表连接

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍多表连接算子的使用方法及注意事项。

用途

多表连接算子可以将多张数据表按照设置的连接条件进行连接。多表连接算子是两表交集算子的高级版本,满足多张数据表之间多种连接类型的需求。

适用场景

计算链路

计算引擎

是否支持

离线

MaxCompute

Hive

HiveStorage

RDS/MySQL

Spark

使用说明

来源节点

多表连接算子必须指定2个或者2个以上的来源节点(又称为输入节点,每个来源节点可视为一张表),以求取这些来源节点数据合并的结果。

主表

多表连接算子中的主表是输入节点中的其中一个节点,主表的作用主要是提供连接的字段与其它节点进行连接操作。系统默认指定第一个输入节点为主表,用户可以自由将其它节点设置为主表。

重要

如果已经配置了连接条件,重新设置主表将会清空已配置的连接条件。

连接类型

系统支持5种数据表连接类型,分别为左连接(left outer join)、右连接(right outer join)、外连接(full outer join)、内连接(inner join)、交叉连接(cross join)。多表连接算子支持多张数据表之间使用不同的连接类型,如节点A(主表)与节点B之间使用内连接,节点A(主表)与节点C之间使用左连接。

5种连接的定义及效果示意分别如下:

左连接:返回左表中所有的记录以及右表中连接字段相等的记录。

image

右连接:返回右表中所有的记录以及左表中连接字段相等的记录。

image

外连接:返回左表和右表所有的记录,连接字段相当的记录合成一条。

image

内连接:返回左表和右表中连接字段相等的记录。

image

交叉连接:如果不指定连接条件,返回左表和右表的笛卡尔积,返回的数据行数为左表的行数乘以右表的行数。如果指定连接条件,则返回左表和右表中连接字段相等的记录(与内连接的效果相同)。

image

说明

1、除了交叉连接外,其它类型的连接必须配置连接条件。

2、RDS/MySQL不支持外连接。

3、MaxCompute(ODPS)不支持笛卡尔积(不带连接条件的交叉连接),如果需要使用笛卡尔积,需要在算子节点配置中开启MapJoin并指定小表。

警告

对数据量比较大的数据表进行笛卡尔连接(不带连接条件的交叉连接),会因数据膨胀造成结果数据量巨大,影响节点的执行耗时,并占用较多的存储空间。

连接条件

连接条件指定了两张数据表之间使用哪些字段进行连接,当数据表中某条数据(假定为a)的所有连接字段的值与另一张数据表某条数据(假定为b)的所有连接字段的值相同,则这a、b两条数据成功连接。多表连接算子支持指定多张数据表之间使用不同的连接条件,如节点A(主表)与节点B之间指定连接条件"A.ID=B.ID",同时节点A(主表)与节点C之间指定其它的连接条件"A.NAME=C.NAME"。

开启MapJoin

当对一个大表和一个或多个小表执行join操作时,可以开启MapJoin显式指定小表以提升运算性能。

说明

开启MapJoin功能仅支持MaxCompute(ODPS)引擎,对其它引擎无效。

输出字段

配置当前节点输出到下游节点的字段列表,默认为所有来源节点的全部字段,可按需删减。如果不同来源节点中存在相同的字段名称或者字段代码,需要手动修改重复的字段名称或者字段代码。

  • 本页导读 (0)
文档反馈