数据模型将来源多处的数据进行归集时,是有序的归集,这种有序归集需要通过模型表间的关联关系来确定。
表关系区(下图红框所标识)中显示了当前数据模型包含的所有模型表:
表关系区中的各模型表,表头底色为蓝色表示维度表,表头底色为绿色表示事实表,模型表在表关系区的底色默认是蓝色,只有该表有字段设置为度量后才会变更成绿色底色。
模型表的来源及实现请参见:数据模型-私有查询。
表命名规则
表关系区中的模型表,按照不同的查询类型,系统为其默认命名的规则如下:
- “数据源表”类型:每张表对应一个目录,目录名称为数据源表的别名。
- “导入文件”类型:每个sheet对应一个目录,目录名称为sheet名称。
- “SQL查询”、“即席查询”、“存储过程查询”、“脚本查询”、“ETL高级查询”类型:每一个查询对应一个目录,目录名称为私有查询类型的名称(如“SQL查询”、“即席查询”等);同一类查询有多个资源,则自动加上数字后缀,如:第一个SQL查询名称为“SQL查询”,第二个SQL查询名称为“SQL查询2”,以此类推。
修改名称
用户以在“表关系区”中通过更多菜单 属性 命令来修改模型表的名称:
表关系类型
数据模型目前支持的模型表间关系类型,主要有如下几种:
1、多对一/一对多:这两个关系实质一样,主要是看连接关系时是主表在前还是从表在前。如下我们有两张数据表“订单表”和“订单明细表”:
订单表 | 订单明细表 |
---|---|
我们从关联字段“OrderID"来看:”订单表“中每一个”OrderID"对应“订单明细表”中多条记录,因此我们说“订单表”与“订单明细表”是一对多的关系,或者说“订单明细表”与“订单表”是多对一的关系。因此这两个表我们可以有如下两种方式定义:
- 如果“订单表”在左边,“订单明细表”在右边,我们需要选择”一对多“的关系。
- 如果”订单明细表“在左边,”订单表“在右边,我们需要选择”多对一“的关系。
2、一对一(内连接)/一对一(外连接):关联字段匹配后,内连接关系将会删除未完全匹配数据,外连接会将未完全匹配数据以”空“补充。如下我们有两张数据表“家庭表”和“学生表”:
家庭表 | 学生表 |
---|---|
这两个表通过“StudentID"分别建立一对一的内连接或外连接关系,其数据效果分别如下:
一对一(内连接)效果: “学生表”中没有匹配的7-10号数据被删除。 | |
一对一(外连接)效果: “家庭表”中7-10号数据补空值。 |
手动设置表连接
手动设置模型表关系的方法有如下两种:
1、拖拽连接线:从某模型表中的左侧或右侧锚点拖拽到目标模型表。
2、表关系菜单:在模型表更多菜单或右键菜单中选择 新建表关系。
连接线菜单
表关系连接线锚点支持右键菜单:
- 编辑:用于修改当前表关系。
- 删除:用于删除当前表关系。
表关系图解
在Smartbi数据模型关系区中,关系线中的白圈代表一,蓝圈代表多。
但是一对一关系不在此规则之列:
一对一(内连接) | |
一对一(外连接) |
表关系布局
该功能为V10.5版本功能
当数据模型含有大量的表,表关系错综复杂(如下图所示)时,可以通过多个子布局视图在展现局部表关系。
多布局视图功能包含如下内容:
- 多布局视图包含了”所有表“布局视图和子布局视图。
- “所有表”布局视图是默认视图,不允许删除,用于显示所有表的关系视图。
- "所有表“布局视图中的表关系可以通过汇总所有子布局视图关系而自动生成。
操作入口
在表关系区底端左侧”所有表“区域右键显示菜单 新增布局:
模型表来源
新增的子布局视图中的模型表来源有两种:
模型表来源 | 适用情况 |
---|---|
通过创建私有查询获取: | 没有限制,适用所有情况。 |
通过“维度”面板中的模型表对象获取: | 仅支持“所有表”布局视图中已设置了模型表关系的情况。 |
布局视图菜单
“所有表”布局视图右键菜单只支持“新增布局”操作,子布局视图支持右键菜单:
- 新增布局:用于创建新子布局视图。
- 重命名:用于修改当前子布局视图的名称。
- 删除:用于删除当前子布局视图。
菜单操作
表关系区的模型表支持“更多菜单(或右键菜单)”操作。
操作入口:在模型表中单击 更多 按钮,或者右键,弹出菜单。
模型表菜单在“所有表”布局视图和子布局视图中有不同:
“所有表”布局视图 | |
---|---|
子布局视图 |
菜单命令说明如下:
菜单命令 | 说明 |
---|---|
添加相关表 | 添加当前模型表在“所有表”布局视图中与其有直接连接关系的模型表。 |
从布局中删除 | 将当前模型表从当前子布局视图中删除。 |
编辑 | |
复制 | 用于复制当前模型表:单击 复制 命令后,系统自动生成副本,且名称为“模型表名称+数字”,如“查询SQL2”。 当私有查询需要在原查询基础上进行改动,从而实现高效复用的情况下,会用到该功能。 |
同步 | 用于实现当库表字段信息(字段别名、数据类型)发生发动时,保证模型表字段信息与库表字段信息一致。 该功能只对”数据源表“类型的模型表有效。 |
新建关系 | 用于新建设置当前模型表与其它模型表间的关系。 该菜单只在表关系区含有两个及以上的模型表时才显示。 |
转换为ETL高级查询 | 用于将当前模型表转换成ETL高级查询。 ETL高级查询的详情请参见:ETL高级查询。 |
从模型中删除 | 用于将当前模型表从数据模型中删除。 |
属性 | 用于查看当前模型表的属性,允许修改当前模型表的“名称”。请参见:修改名称。 |
注意事项
设置两个模型表关系连接时,允许选择的关联字段必须要数据类型一致,否则置灰不允许选择关联。
如下图,“产品表”中的“产品编号”置灰不允许选择,是因为:“订单明细表”中的“产品编号”是字符型,而“产品表”中的“产品编号”是整型。