历史版本9 :多路径数据关联 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

FineBI 版本JAR 包
5.12020-02-28

1.2 应用场景

很多的冗余多路径都是由于用户添加表及建立表间关联不规范造成的,可以在此学习从原始数据加载过程中就避免产生这些冗余多路径。

1.3 功能介绍

一般原始数据库有完整的主外键关联关系,直接读取到 FineBI 中时数据及数据关联结构均能够保持规范。下面的操作主要是针对如果本身数据库并未添加完整的主外键关系,只是直接读取原始数据并且只写上对应表的关联字段。或者由于 BI 支持从多数据源中加载数据,从不同数据库读取的数据表之间或者数据库表与上传的 EXCEL 文件并没有建立主外键关系时,提供规范的操作让 FineBI 读取数据并建立多维数据库中的关联关系能够比较规范。

针对上面所说的不规范数据关联情况,提供了操作方法来规范在 FineBI 中建立的数据关联。

2. 示例编辑

1)在业务包中数据表的关联关系处,提供了标识主键的方法,外键可直接通过字段建立表间关联来体现。如下图所示:

33.png

2)建立关联关系时,可以设置表间关联关系为一对一或一对多,即在关联操作时,可以选择一方是 1 还是 N 来标识关联方向(1 为主表,N 为子表)。从而确保建立的关联关系与用户实际业务逻辑、数据库存储逻辑保持一致。表间关联关系的设置可参考关联视图(单表)。如下图所示:

1582085217949720.png

注:如果用户标注的信息与实际数据不符,如非 distinct 字段设置为主键等信息,在表更新时会自动纠正,但是会导致部分相关设置不生效。

2.1 根据业务逻辑设置

当前某公司业务上有客户表与合同表两个表,而且这两个表需要建立关联关系。直接读取数据库数据并建立关联,没有进行区分主子表关系和设立主键。但是因为存储数据不全,直接判断关联字段的数据就发现客户表与合同表的数据都是一对一匹配的,即一个客户对应一个合同,由此产生了很多冗余的多路径情况,而且这些多路径很多是错误且不存在于业务逻辑中的。

但从公司真实业务逻辑来说,客户表是主表,合同表是子表,即同一个客户允许与多个合同关联,反之则不行。需要按照这个实际逻辑到业务包的表设置界面进行操作设置。

建立表间关联关系的操作,具体参见 关联视图 。

2.1.1 读取主外键

直接读取原始数据库表的主外键信息,或者字段是否设置唯一约束。如果数据库中已经添加过,则可以直接读取到业务包的数据表中。如果有外键,且对应表也在业务包中,则可以直接建立数据关联关系。

2.1.2 设置主键

如果添加的数据表没有主外键等信息,那么添加到在数据表设置页面,可以由用户进行手动添加。

2.1.3 匹配关系及关联方向

为数据表添加数据关联信息界面,可以设置数据匹配关系是一对一或一对多,而且如果是一对一的情况,也可以选择关联方向,即A,B 表数据都是一对一,可以根据实际业务逻辑设置方向为 A->B ,而不采用 B->A 的关联关系,即采用 A 关联 B 用取 1:N 的选择。

2.2 数据表复用

当前某公司有一个公共的维度表是人员姓名的维度表,然后有一个订单表,其中会有创建人、审核人两个字段与姓名维度表进行关联。当需要使用订单表中的指标,如订单金额,订单数等信息时,直接使用姓名字段的话,并不知道应该使用创建人还是审核人作为姓名匹配,还必须手动选择此时需要使用哪个字段与姓名维度表进行匹配。

所以,为了方便上述问题的前端分析操作,需要复用这个订单表,将订单表添加2次至业务包中且作为不同的表,分别用表中的创建人、审核人字段与姓名维度表关联(即2个订单表都只用一个字段去匹配)。此时在前端分析时,直接从名字上区分后,需要使用创建人可以从使用创建人关联的订单表中取指标,使用审核人的相关指标方法类似。