横向连接
1. 简介
1.1 功能简介
横向连接就是将两张表单的数据左右合并为一张表。横向连接目前支持以下 4 种连接方式:
- 左连接:对应 SQL 语句中的 left join。
- 右连接:对应 SQL 语句中的 right join。
- 内连接:对应 SQL 语句中的 inner join。
- 全连接:对应 SQL 语句中的 full join。
1.2 使用场景
横向连接时,左右两张表单需要具有共有的字段,也就是连接字段,连接时根据该字段左右合并数据。
比如,学生的数学成绩是一张表,学生的英语成绩是另外一张表,他们共有的字段是学生姓名。可以通过姓名字段将两张表的数据左右合并为一张表,便于查看每个同学的各科成绩。
1.3 预期效果
不同连接方输出的结果如下图所示:
2. 设置步骤
点击安装应用模板 数据工厂讲解 应用模板,本文将按照模板中的示例数据进行讲解。
2.1 数据源表单
我们以模板中的数学成绩和英语成绩表单作为本次横向连接的数据源:
2.2 新建数据流
在数据工厂处新建一条数据流。如下图所示:
2.3 选择数据源
对数据流重命名,并添加 2 个输入节点,分别选择数学成绩和英语成绩表作为输入源。如下图所示:
2.4 添加横向连接
在数据流设计画布中添加一个「横向连接」数据处理节点,然后将数学成绩和英语成绩 2 个输入节点依次连接至「横向连接」节点。如下图所示:
2.5 节点配置
横向连接需要配置连接方式及连接字段。如下图所示:
2.5.1 连接方式
连接方式目前支持内连接、左连接、右连接和全连接。横向连接时,是根据连接字段进行匹配的,连接字段相同的数据根据连接方式进行左右拼接。比如,内连接,取两张表的数据交集,连接字段只有在左右两张表都包含才会进行匹配,否则舍弃。
1)左右表单如何区分
方法一:先连向「横向连接」节点的表单为左侧表单,后连向「横向连接」节点的表单为右侧表单。
方法二:连接以后,在节点配置处也可以看到左右两侧的表单分别是哪一张:
2)合并连接字段
横向连接时,若选择「合并连接字段」,合并后,连接字段将合并为一个字段。
合并与否的效果如下图所示:
合并连接字段 | |
不合并连接字段 |
注:上图中的橙色表头代表的是连接字段。
2.5.2 连接字段
连接字段就是两张表单合并为一个表单的条件,如果有多个连接条件,那么可以添加多个连接字段。连接时,只有连接字段全部匹配的数据才会进行连接。如下图所以,点击「数据预览」可以预览连接后的效果:
注:不支持将复选框组、下拉复选框、成员多选、部门多选、多标签页、子表单、地址字段设置为连接字段。
2.6 节点重命名
为了更好地标记数据流中每一个数据处理步骤的计算规则,可以对数据流节点进行重命名。如下图所示:
2.7 保存并输出
追加合并结束后,如果需要进一步计算,可以添加其他数据处理节点进行处理。如果处理完成,需要连输出节点将数据输出并保存处理结果。如下图所示:
2.8 效果演示
经数据流横向连接处理后的数据可以通过仪表盘进行展示。点击查看效果
不同连接方式的连接效果如下图所示:
还可以通过输出表同步功能同步至表单进行备份,详情参见:输出表的使用。
3. 注意事项
3.1 空值不会互相匹配
横向连接的两张表合并依据中如果有空值,空值之间不会互相匹配。
3.2 数据预览限制
节点数据预览时,最多可预览前 200 条数据,若想查看完整的数据可以通过仪表盘进一步分析展示。
3.3 嵌套使用横向连接
一个横向连接节点暂时仅支持合并 2 张数据表;如有更多数据表需要拼接,可以嵌套使用多个「横向连接」来实现。
即先将 A 表、B 表横向连接,再将 C 表和刚才的横向连接节点用另一个「横向连接」连接,依此类推。
3.4 日期匹配精度
如果连接字段为时间类型,可以自由选择匹配的精度。时间字段默认的匹配精度为天。
3.5 笛卡尔积
当数据源的连接设置不合理时,可能导致计算结果出现笛卡尔积。若出现笛卡尔积,在数据预览时,系统将给出如下提示:
为避免后续笛卡尔积的输出数据超过 10 w 而导致数据流更新失败,您可以提前根据 数据流更新失败问题排查 文档中的操作步骤进行调整。