1. 概述编辑
1.1 版本
FineBI 版本 | JAR 包版本 | 功能变动 |
---|---|---|
5.1 | - | - |
5.1.5 | 2020-09-02 | 左右合并默认选择左合并 |
5.1.13 | - | 直连:新增支持「Hadoop Hive数据库」中的数据表与 Excel 左右合并 |
1.2 应用场景
在实际使用数据的过程中经常会有需要将两张表联合在一起形成一张新表使用的情况,
假如有这样两张数据表:
① Table A:记录了学生姓名、英语成绩
② Table B:记录了学生姓名、数学成绩
如果想在一张表中就看到学生的姓名、数学成绩和英语成绩,则可以使用「姓名」字段作为「合并依据」进行左右合并。
不同的合并方式如下所示:
1.3 直连相关
直连表和 Excel 左右合并
在直连版本中,有四种数据库「Microsoft SQL Server 2016、Oracle、Pivotal Greenplum Database、Hadoop Hive」支持数据表与 Excel 进行左右合并,其余数据库不支持。
在进行左右合并前需要将 FINE_CONF_ENTITY 表中SystemOptimizationConfig.excelExtractDataBase的字段值改为「true」,如何修改详细请参见:FINE_CONF_ENTITY可视化配置
直连版本中,进行左右合并的两张表不能来自两个数据源中。
否则合并后报错:[DIRECT-ETL] unsupported data source: databases on different hosts/ports
2. 示例编辑
例如在地产行业业务包中有两张数据表:签约事实表(FACT_SALE_CONTRACT)和合同维度表(DIM_CONTRACT),需要将这两张表根据合同ID字段联合在一起形成一张新表且保证签约事实表的数据不会丢失。此时可以通过左右合并来实现。
2.1 创建自助数据集
1)进入「数据准备>业务包」,点击「添加表>自助数据集」,如下图所示:
注:此处只能选择已添加并进行数据更新的数据表,未更新的数据表不能用于创建自助数据集。
注:建议用户在进行左右合并前,减少表字段名称长度,避免出现字段名称过长导致的自助数据集保存失败问题。
2.2 选择合并的数据表
添加字段后在左侧的操作栏点击 「+」 ,选择「左右合并」,如下图所示:
选择要合并的表为「合同维度表」,并选择要添加的字段,点击「确定」,如下图所示:
2.3 添加合并依据
合并依据的含义用户可参见 1.2 节的「姓名」字段的介绍。
要保证签约事实表的数据完整,需要选择「左合并」方式。
此时在合并依据栏会自动出现两张表共同的的字段为「合并依据」,此处为「 CONTRACTGUID」合同ID字段。下图所示:
注:此处添加的两个表中的合并依据字段必须为同一类型的,字段类型不一致不能左右合并,需要进行字段类型转化。
用户也可以手动更改合并依据字段,或添加多个合并依据。若添加多个合并依据,则可以
合并方式说明:
合并方式 | 说明 |
---|---|
左合并 | 对应 SQL 语句中的 left join |
右合并 | 对应 SQL 语句中的 right join |
交集合并 | 对应 SQL 语句中的 inner join |
并集合并 | 对应 SQL 语句中的 full join |
2)在添加完合并依据后,下方的数据预览框即会出现合并后新表的数据预览,如下图所示:
抽取数据版本:合并依据会合并成一个字段,只保留合并结果「CONTRACTUID」
直连数据版本:左右合并两张表的合并依据字段依旧是两个字段,如下图所示:
3)若想要修改之前已经添加的要合并的表/字段,可将鼠标悬浮在要合并的表一栏,点击编辑按钮重新选择表和字段。如下图所示:
2.4 效果查看
点击右上角的「保存/另存为」按钮并更新数据后,在业务包中看到处理过的自助数据集,如下图所示:
3. 多个合并依据编辑
实现「部门人数」和「销售额」合并到一张表中,如下图所示:
无法单独使用一个字段作为合并依据,所以需要「部门、地区」字段共同作为合并依据。多个合并依据的意义即保证左右合并时数据的唯一性,如下图所示:
4. 注意事项编辑
4.1 使用并集合并后更新失败
由于并集合并相当于 N:N 会产生笛卡尔积,导致数据量极度膨胀。
为了不影响系统的稳定性,当并集合并后数据量满足以下情况时系统会主动打断进行过 N:N 操作的自助数据集的更新:
进行并集合并后数据量超过 1 千万;
膨胀系数>=5;膨胀系数:MIN (并集合并结果数据量/左表数据,并集合并结果数据量/右表数据)。例如,100w 数据和 500w 数据 N:N 结果为 2000w数据,那么 N:N 膨胀系数为: 2000w/500w =4
若出现笛卡尔积,更新信息处会提示用户是否更新成功:
数据集生成成功:更新时检测到笛卡尔积,数据膨胀,更新耗时增加,请检查左右合并步骤中的合并依据列数据是否有重复值。
数据集生成失败:更新时检测到笛卡尔积,数据严重膨胀,操作中止。请检查左右合并步骤中的合并依据列数据是否有重复值,请确保重复值不应过多。
若生成失败,但用户依旧要使用 N:N 进行分析,可以通过过滤等手段缩减数据量。
4.2 数据字段要求
数据表的字段有空格会导致左右合并结果异常,在进行左右合并前,请确保合并数据表字段中没有空格。如下图所示:
4.3 设置预览界面计算数据
若创建的自助数据集为 数据分析用户 创建的或者数据处理用户在我的自助数据集创建的。
当数据量比较大时,可以在数据集的编辑过程中使用前 5000 行进行计算,使计算更为流畅,如下图所示: