页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 9 下一个 »

1 概述

当在数据模型中加载了多个表或查询时,你很可能要使用所有这些表/查询中的数据来执行一些分析。

 为准确计算结果并在报表中显示正确信息,这些表之间的关系是必需的。

 在大多数情况下,你无需执行任何操作,自动检测功能可为你执行此操作。

 但有时,你可能需要自行创建关系,或者需要对关系进行更改。

 无论哪种方法,都有必要了解 Smartbi 中的关系及其创建和编辑方式。

前置条件

1、数据模型支持自动检测关系,也支持手动创建关系、手动检测关系。

2、开启自动检测关系:需要在运维设置/ 系统设置 / 高级选项 设置 OLAP_QUERY_AUTO_ADD_CHECK_LINK=true,在加载表或者模型时才会自动检测关系。

3、如开启了自动检测关系,用户手动设置关系不正确时,会提示关系无效,但目前未强制更正,检测关系的原理就是利用建立关系的字段在表中是否重复,会真实查数据库,部分数据库慢可关闭此检测。

4、基数 暂不支持 多对多

5、引用关系完整性,仅在数据模型是直连模式生效,抽取模式不生效。

2 手动创建关系

数据模型支持手动创建关系。

以产品自带的 “产品表”、“订单表”、“产品类别表”等创建订单模型为示例进行说明,为了更好的说明,先关闭自动检测表关系的设置项: OLAP_QUERY_AUTO_ADD_CHECK_LINK=false。

具体操作步骤如下:

1、创建数据模型,并加入 “产品表”、“订单表”、“产品类别表“等表。

2、设置 ”订单表“与”订单明细表“的关系,选中”订单表“ 再右键菜单 新建关系,会出现 编辑关系对话框。

选项内容
关系
  • 需要选择原表(左表)的关联字段,再选择目标表(右表)对应的关联字段; 如果原表设置的字段是字符串,那么目标表的也只能选择字符串的字段与之关联。
  • 关系是必填项,一定要设置至少一个关系;点击 支持新建多个关系;假设设置了多个关系,生成的SQL语句是and。
  • 关系支持设置 自定义计算列:比如想要关系字段需要使用contact、replace等函数进行拼接、替换等,需要使用自定义计算列。
条件默认 等于,支持等于、不等于、大于等于、小于、小于等于;如果是抽取模式,并且缓存库是ClickHouse,则不支持 等于、不等于、大于等于、小于、小于等于 条件
基数
  • 支持 一对多,多对一,一对一。
  • 基数是根据设置的关系字段检测原表或查询里面的真实数据得到的。
  • 站在业务角度,数据模型中的基数关系(一对一、一对多、多对一),描述的是真实业务数据之间联系,能反应真实世界对应业务实体之间的关联关系

           如一个顾客可以有多笔订单,一个订单可能购买多个产品,一个订单也可能分拆多个快递单等等,对应到数据模型就是:

引用关系完整性该设置项仅对 直连 模式生效。 详情可查看本篇章节 引用关系完整性 。

       

3、根据步骤2设置好各个表、查询的关系,并且构建数据模型

4、保存数据模型,可以查看到已经设置好关系的模型:


3 在加载期间自动检测

    

  • 开启自动检测关系:需要在运维设置/ 系统设置 / 高级选项 设置 OLAP_QUERY_AUTO_ADD_CHECK_LINK=true,在加载表或者模型时才会自动检测关系。
  • 不管是直连还是抽取模式,如果数据模型同时加载两个或多个表/查询时,Smartbi将尝试为你查找并创建关系, “关系”、 “基数” 会根据规则自动创建关系。如果无法以高置信度确定存在得匹配项,则不会创建关系。但是仍可使用 新建关系 对话框来手动创建或者编辑关系。
  • 如果 ”自动检测表关系“是禁用状态,则该模型加载表或查询时,不会自动检测关系,需要手工创建或者使用工具栏的”自动检测“创建关系。


4 使用"自动检测"创建关系

 当系统没有开启自动识别字段关系时,可以点击 检测关系 检测各个表/查询之间的关联关系。规则与第2章  在加载期间自动检测 一致。

5 基数


5 引用关系完整性




  • 无标签