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

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

与当前比较 查看页面历史

« 前一个 版本 3 下一个 »

1 概述


由于现有系统的"计算列"只支持单表不同字段计算,不支持多表不同字段之间的计算,大量跨表的"计算字段"需求难以满足,为了提升数据处理的灵活性与效率,满足企业多样化的数据分析需求,解决在实际业务场景中遇到的问题,我们开发了可以跨表创建计算列的新功能。
该功能允许用户在数据模型和报表层跨表选择字段进行计算,为用户提供更强大的数据处理能力,助力企业更好地进行数据分析与决策。


2 示例说明

2.1 多表字符串拼接示例

以产品自带的“订单模型”为例:

“订单表”中存储的是订单的信息包含:下单日期(订单日期)、下单区域、省份、城市等,而“订单明细表”存储的是订单具体的信息比如:数量、销售额等,“顾客表”存储的是顾客编号、联系方式等信息。

 现在用户希望将“订单表”中的区域与“顾客表”中的顾客编号拼接起来,以便更直观地查看“不同区域顾客的销售情况”。

具体操作如下:

1、在数据模型中选择订单表,点击 “新建计算列”,如下图操作,详细的操作可查看:创建计算列

根据用户的诉求,创建计算列“区域顾客编号”,然后在编辑器中拖入拼接的字符串的函数:concat([发货区域],'-',[顾客编号])

可以看到上图右侧“字段”tab区域“选择表”:这里可以选择多个表的字段了,这里显示表/查询的逻辑:以”选择表“为中心的核心子图(什么叫核心子图?简单的理解就是以它为中心的构建的星型模型上的表),如果不在它的核心子图上,编辑器中无法拖入对应的表字段的。详细可查看本文章节:4 跨表计算列创建原理。

编写好之后,点击【确定】,回到数据模型:
创建好的跨表计算列“区域顾客编号:无法“预览数据”这里预览出来(非跨表计算列可以正常预览出来)

并且支持更改跨表计算列的表属性:

2、保存数据模型,去创建透视分析:拖入“区域顾客编号”可以查看到各个区域客户的销售额情况:


2.2 多表数值四则运算示例


在商品销售场景中,商品信息维度表记录商品的成本价,商品销售明细表记录商品的售价和销售数量。为了计算每个商品的销售利润和总利润,需要进行跨表计算。

以下是表的信息说明

商品信息维度表(维表):

商品 ID商品名称成本价
1001商品 A20.0
1002商品 B30.0
1003商品 C15.0
1004商品 D25.0
1005商品 E18.0

商品销售明细表(事实表):

商品 ID售价销售数量
100130.05
100132.03
100128.04
100131.06
100240.02
100238.07
100242.03
100239.05
100320.08
100322.04
100318.06
100321.05
100435.03
100433.02
100437.04
100434.06
100525.07
100523.03
100527.05
100524.04

具体操作如下:

1、在数据模型中导入数据,并构建关系:

2、保存数据模型并且抽取成功之后,去创建计算列:


从”商品销售明细表“拖入 “售价” 字段,从“商品信息维度表”拖入 “成本价” 字段,在表达式中输入 “售价 - 成本价”,得到单个商品的利润计算列,命名为 “单个商品利润”。

若要计算总利润,可再新建一个计算列,使用 “(售价 - 成本价)* 销售数量” 的表达式,命名为 “总利润”。这样在商品销售明细表中就新增了两个计算列,用于展示商品的利润数据,方便企业进行成本与利润分析,了解销售业务的盈利情况。

2、把”单个商品利润“、“总利润”转换成度量:

3、保存数据模型并且创建 透视分析,分析商品的利润数据,如下图可以清晰的看到各个商品的利润情况:

4 跨表计算列创建原理

  • 以 “核心子图” 为准进行跨表计算列的创建。

  • 什么叫“核心子图”?先要了解子图:子图(也可以理解为扩展表),也可以理解为数据模型中的每个表都可构建一个子图,A表的子图是以A表为中心,根据筛选方向即箭头指向它的,代表能筛选它(比如B-→A,即B可以筛选A)都会把它纳入子图中; 而核心子图,可以理解为以事实表为中心,所有基数关系为”一“都会被纳入到以事实表为中心的子图,简单的理解就是星型模型。

  • 基数为 “一对一” 并且是双向筛选时支持添加跨表计算列;基数关系为 “一对多” 或者 “多对一”,并且是双向筛选时,“一的” 一方仍然不支持创建宽表计算列。这是基于数据一致性和性能的考虑,若在 “一的” 一方随意创建宽表计算列,可能会导致数据冗余和计算效率低下。例如,在商品销售数据模型中,一个商品可能对应多个销售订单(一对多关系),在商品信息维度表(“一的” 一方)不支持创建某些类型的宽表计算列,以保证数据的规范性和系统运行效率。

5 功能限制

5.1 表关系设置限制


在设置表关系时,“跨表计算列字段” 不会显示。这是因为跨表计算列是基于已有的表关系进行数据计算和获取的,其本身不适合作为建立新表关系的依据。例如,在订单表和订单明细表的关系设置中,订单表的 “订单编号” 与订单明细表的 “订单编号” 用于建立关系,而跨表计算列字段不会出现在这个设置界面中,避免用户错误地使用其建立关系,导致数据逻辑混乱。

5.2 数据预览限制

跨表计算列不支持数据预览。由于跨表计算列的数据获取涉及多个表之间的关联和计算,实时预览数据可能会消耗大量系统资源,影响系统性能。例如,在一个涉及多个大表的跨表计算列场景中,若支持实时预览,可能导致系统响应缓慢甚至卡顿。但在 “表字段属性” 中,跨表计算列的相关信息会正常显示,方便用户查看和设置计算列的属性,如数据类型、格式、可见性等。

5.3 行权限设置限制

跨表计算列不支持设置行权限。计算列一直以来都未支持设置行权限,跨表计算列也延续了这一限制。这是因为跨表计算列的数据是通过多个表计算得出,其数据的行级访问控制较为复杂,难以通过简单的行权限设置实现精准控制。



  • 无标签