...
以产品自带的 “产品表”、“订单表”、“产品类别表”等创建订单模型为示例进行说明。
为了更好的说明,先在运维设置/系统选项/高级设置关闭自动检测表关系的设置项高级设置中关闭自动检测表关系的设置项: OLAP_QUERY_AUTO_ADD_CHECK_LINK=false 或者把模型的 自动检测表关系 禁用。
...
选项 | 内容 |
---|---|
关系 |
|
条件 | 默认 等于,支持等于、不等于、大于等于、小于、小于等于;如果是抽取模式,并且缓存库是ClickHouse,则不支持 等于、不等于、大于等于、小于、小于等于 条件(ClickHouse库本身不支持)。 |
基数 |
|
假设引用关系完整性 | 该设置项仅对 直连 模式生效。 详情可查看本篇章节 假设引用关系完整性 。 |
方式1:
方式2:
3、根据步骤2设置好各个表、查询的关系,最终效果如下,构建了一个 星型模型:
...
当系统没有开启自动识别字段关系时,可以点击 检测关系 检测各个表/查询之间的关联关系。规则与第2章 在加载期间自动检测 一致。
锚 | ||||
---|---|---|---|---|
|
3 基数
信息 | ||
---|---|---|
| ||
1、逐个判断查询相同别名的字段列,是1还是多;当count() 的数量和distinct count的数量和count(distinct(XXXX))的数据不一致,说明该列是多,否则为1。 2、例如orders 与orderDetail 表,关联字段是OrderID,当orders 的count(*) 与distinct count与count(distinct (OrderID)),是一致的,则认为是“一”的一方;当orderDetail的count(*) 与distinct count与count(distinct (OrderID))不是一致时,则认为是“多”的一方。 3、注意:这个检测方法会做一次count,所以数据库执行count慢时,会出现检测性能问题;自动构建表关系就是依赖基数检测结果,如果数据量很大时,建议关闭自动检测基数。 |
...
2、在数据模型中,”订单表“和”订单明细表“基数关系如果是 一对多,代表”订单表“中用于和”订单明细表“建立关系的字段值OrderID,在”订单明细表“是唯一的; ,代表”订单表“中用于和”订单明细表“建立关系的字段OrderID,在”订单表“是唯一的; ”订单表“中用于建立与”订单明细表“关系的字段值,在”订单明细表“会有多条记录匹配。
...
3、站在业务角度,数据模型中的基数关系(一对一、一对多/多对一),描述的是真实业务数据之间联系,能反应真实世界对应业务实体之间的关联关系描述的是真实业务数据之间的联系,能反映真实世界对应业务实体之间的关联关系,如一个顾客可以有多笔订单,一个订单可能购买多个产品,一个订单也可能分拆多个快递单等等,对应到数据模型就是:
...
4、如下图所示,请注意 Orders[CustomerID] 和 Customers[CustomerID ] 之间不存在引用完整性,Orders[CustomerID ]包含一些值,这些值不存在于 Customers 表中, 在这种情况下,不应设置 假设引用完整性。
5 关系布局
使用数据模型的布局,可以创建仅包含模型中部分表或查询的关系图,可以帮助你提供你想要使用的表的更清晰视图,并让你能够更为轻松地使用复杂数据模型。使用数据模型的布局,可以创建仅包含模型中部分表或查询的关系图,可以帮助你提供你想要使用的表的更清晰的视图,并让你能够更为轻松地使用复杂数据模型。
5.1 创建单独的关系视图
具体操作如下:
1、以产品自带的northwind数据库的“产品表”、“订单表”等构建“订单模型”。
2、然后在创建单独的关系视图,也可以叫做布局
- 首先选中 关系视图 的 所有表 右键菜单 新增布局,布局名称默认布局1,布局2,布局3,......。
- 再到右侧维度区域 选中“产品表”,然后 右键菜单 添加相关表 ,会把“产品表”相关联的所有表添加到布局中; 一般是添加 事实表,以事实表为中心,查看其对应的维表关系、基数设置。
- 如果发现在布局中添加错了表或查询也可以使用右键菜单的 从布局中删除 菜单将其删除。
- 构建好布局之后,可以在布局上修改各个表/查询的关系,会直接更新到 所有表 中。
- 构建好布局之后,可通过选中布局名称,然后 右键菜单 对应其重命名、或者删除操作,也可以新增更多的布局。
- 布局里面的表或查询的右键菜单基本与 所有表中右键菜单是一致的,详情可查看:设置及修改查询。
- 布局支持直接添加各个查询,布局中添加了,在 所有表中也会添加。
...