1. 描述

两张在逻辑上需要关联的表,其关联依据的字段的值均不是唯一的,如果直接使用手动建立关联关系是无法将这两张表关联起来的,该如何操作呢?
比如说,我们有两张表contract_info和contract_total_amount,这里两张表里面均有一个contractType字段,但是该字段的值均不是唯一的,如下图:

商业智能平台字段值不唯一

2. 实现思路

通过添加一个数据集,在该数据集中添加一个contractType字段,并使该数据集中的这个字段值唯一显示,然后在分别将上述两张数据表与该数据集进行关联即可。

3. 数据准备

登录FineBI商业智能分析系统页面http://localhost:8080/FineBI/ReportServer?op=fbi,点击数据配置>业务包管理>常见应用业务包,为该业务包添加上述2个数据表,如下图:

商业智能平台数据准备

3.1 添加数据集

在数据表管理界面点击+SQL数据集按钮,进入服务器数据集配置界面,选择数据连接,在下面的SQL语句输入框输入如下SQL语句:
select distinct contractType from contract_info
点击右侧的预览按钮,就可以看到该数据集中的contractType字段值已经是唯一显示了:

商业智能平台添加数据集

点击下一步,重命名服务器数据集为contractType,如下图:

商业智能平台重命名服务器数据集

点击保存,即可在FineBI商业智能系统数据表管理界面看到新增了一个名为contractType的数据表。

4. 建立关联关系

根据手动建立关联关系中介绍的步骤,分别将contractType数据表与contract_infocontract_total_amount数据表关联起来,如下图:

商业智能平台建立关联关系

5. Cube更新

保存业务包,回到数据配置界面,选择Cube更新设置,点击立即更新多维数据库按钮将数据库中的数据更新到Cube中。