1. 概述
使用文档学习可参考下文,视频学习如下:
1.1 版本
FineBI 版本 | 功能变动 |
---|---|
6.0 | 权限继承下的左右合并逻辑优化 注:该逻辑优化仅针对抽取的、开启权限继承的、包含左右合并步骤的自助数据集。 |
6.0.5 |
|
1.2 应用场景
在实际使用数据的过程中经常会有需要将两张表联合在一起形成一张新表使用的情况,
假如有这样两张数据表:
① Table A:记录了学生姓名、英语成绩
② Table B:记录了学生姓名、数学成绩
如果想在一张表中就看到学生的姓名、数学成绩和英语成绩,则可以使用「姓名」字段作为「合并依据」进行左右合并。
不同的合并方式如下所示:
1.3 功能简介
如果您有 sql 语言基础,可以将左右合并理解为 sql 中的“join”。
如果您对 Excel 的“vlookup、sumif”更熟悉,推荐您先浏览 其他表添加列 功能。
注:用户若需要将多流程处理后的数据进行左右合并,可使用 FineDataLink 中的 数据关联 功能实现。
1.4 直连版本注意事项
直连数据左右合并的两张表不能来自两个数据源中(抽数版本可以来自两个数据源)。
合并后会报错:[DIRECT-ETL] unsupported data source: databases on different hosts/ports
直连数据下,只有部分数据库中的表可以和 Excel 表左右合并,详细请参见:支持与Excel融合分析的数据库
2. 示例
示例数据:商品数据表.zip
为了分析该商品的销售额,需要将「商品销售明细表」中的数量字段与「商品信息维度表」中的单价字段合并到一张表中进行计算。
2.1 新建分析主题并添加数据
1)新建分析主题,并添加数据。点击「本地Excel文件」上传「商品销售明细表」,点击「继续上传」可以继续上传「商品信息维度表」,如下图所示:
注:建议用户在进行左右合并前,减少表字段名称长度,避免出现字段名称过长导致保存失败问题。
2.2 设置左右合并
1)如下图,添加左右合并步骤:
2)选择要左右合并的表「商品信息维度表」,并勾选该表中要参与左右合并的字段。如下图所示:
3)选择合并方式为「左合并」,并添加合并依据为「商品编号」。如下图所示:
合并依据字段必须为同一字段类型;
若左右两表中有字段名一致,系统会将其自动添加为合并依据。用户可以手动删除或添加合并依据。
合并方式说明:
合并方式 | 说明 |
---|---|
左合并 | 对应 SQL 语句中的 left join |
右合并 | 对应 SQL 语句中的 right join |
交集合并 | 对应 SQL 语句中的 inner join |
并集合并 | 对应 SQL 语句中的 full join |
2.3 效果查看
两张表的字段合并到一张表中。合并依据会合并成一个字段,只保留合并结果「商品编号」,如下图所示:
3. 多个合并依据
实现「部门人数」和「销售额」合并到一张表中,如下图所示:
无法单独使用一个字段作为合并依据,所以需要「部门、地区」字段共同作为合并依据。多个合并依据的意义即保证左右合并时数据的唯一性,如下图所示:
4. 创建合并计算字段
左右合并的优势在于,我们可以直接对合并依据(两张表进行匹配的字段)进行处理后,再进行匹配。
4.1 示例一
若左右两表的合并依据无法直接合并:
比如:左右两表的合并依据字段,它们的字段类型不一致;
比如:左表的是「南京」,右表是「南京市」,无法自动匹配;
我们就可以使用「创建合并计算」创建一个辅助的合并依据字段。如下图所示:
详细示例可参见:左右合并匹配失败处理
4.2 示例二
当出现本文第三节,需要使用多个合并依据,例如需要「地区」和「部门」共同作为合并依据的时候,用户也可以使用「编辑合并计算」来实现。
使用合并计算「地区+部门」作为合并依据即可。
5. 注意事项
5.1 null 值不会互相匹配
左右合并的两张表合并依据中如果有 null 值,null 之间不会互相匹配。若您需要对它们进行匹配,可以对其赋值,比如说可以都赋值为“0”后,再重新进行左右合并。
5.2 产生笛卡尔积
若进行左右合并的两张表,它们的合并依据字段中有重复项,左右合并后就会产生笛卡尔积,导致数据量膨胀。(比如说以「id」列作为合并依据,左表 id 字段不唯一,或右表 id 字段不唯一,进行左右合并后就会产生笛卡尔积)。
系统会自动检测「合并依据」是否重复,并给出提示,如下图所示:
为了不影响系统的稳定性,当并集合并后数据量满足以下情况时系统会主动打断进行过 N:N 操作的自助数据集的更新:
进行并集合并后数据量超过 1 千万;
膨胀系数>=5;膨胀系数:MIN (并集合并结果数据量/左表数据,并集合并结果数据量/右表数据)。例如,100w 数据和 500w 数据 N:N 结果为 2000w数据,那么 N:N 膨胀系数为: 2000w/500w =4
若出现笛卡尔积,更新信息处会提示用户是否更新成功:
数据集生成成功:更新时检测到笛卡尔积,数据膨胀,更新耗时增加,请检查左右合并步骤中的合并依据列数据是否有重复值。
数据集生成失败:更新时检测到笛卡尔积,数据严重膨胀,操作中止。请检查左右合并步骤中的合并依据列数据是否有重复值,请确保重复值不应过多。
若「更新信息」处提示生成失败,但用户依旧要使用 N:N 进行分析,可以通过过滤等手段缩减数据量达到系统不打断的要求。
5.3 数据字段要求
数据表的字段有空格会导致左右合并结果异常,在进行左右合并前,请确保合并数据表字段中没有空格。如下图所示:
5.4 设置预览界面计算数据
当数据量比较大时,可以在数据集的编辑过程中使用前 5000 行进行计算,使计算更为流畅,如下图所示: