[]
        
在线Demo 免费试用
(Showing Draft Content)

函数计算范围

1. 概述

1.1 功能概述

我们先来看下面这张报表,这张报表中除了展示数据明细外,还展示了各大区和省份的总销售额以及不同级别销售额的占比情况,包括各大区在全国的占比、各省份在所属大区的占比以及单个订单在全省的占比。

PixPin_2025-07-02_11-07-00

那么在数据集中仅有“ 订单金额 ”字段的情况下,怎样才能得到这些计算结果呢?

我们稍加分析:

  • 大区或省份的总销售额 = 大区或省份范围内所有订单金额的求和

  • 大区/全国 = 大区内的订单金额求和 / 全国的订单金额求和

  • 省份/大区 = 各省份内的订单金额求和 / 各大区订单金额求和

  • 订单/省份 = 各订单金额 / 各省份订单金额求和

不难发现,实现示例效果的关键在于计算出各区域范围内的订单金额求和。

我们已知“ 订单金额 ”数据字段和 Sum 求和函数,欠缺的正是本节即将为您介绍的“ 计算范围 ”。在使用Sum函数对“ 订单金额 ”求和时,增加“ 计算范围 ”参数,即可得到指定范围内的运算结果。

2. 计算范围

  1. 在报表中不仅是Sum函数,其他所有集合函数以及带with Scope参数的函数,都可以指定计算范围,从而使函数仅在指定的范围内进行运算。这也就是“ 计算范围 ”的含义。

  2. 报表中的计算范围有三种,分别为: 数据集数据区域分组 。实际应用时,将这三种范围对象的名称作为scope参数添加到函数表达式中即可。数据集和分组的概念之前已经介绍过,那么 数据区域 指的是哪个范围呢?

    1)所谓 数据区域 ,简言之就是在报表当中用于展示数据集数据的区域性组件,具体包含表格、矩表、图表和列表这四种组件。通过之前对这四种组件的了解,可以看出数据区域组件与普通组件的关键区别在于:数据区域展示的条目数会随着数据集中记录数的变化而变化;而其他普通组件展示的仅是一个结果,当数据集中的记录数发生变化时,结果的值可能会改变但结果本身的个数不会发生变化。

    2)现在我们对这三种计算范围的概念都有了一定的了解,接下来就以开篇的报表为例为您介绍计算范围的具体应用方法。

3. 操作步骤

3.1 新建报表,添加表格分组

  1. 新建报表,添加基于WynDemoData的数据集。然后添加表格组件,并将“ 销售大区 ”和“ 销售省份 ”拖拽到分组窗格中添加两级分组。

    PixPin_2025-07-02_10-28-47

  2. 表格明细行绑定数据,为了显示层级更为明显,我们将二级分组头第一列默认绑定的字段删除,在第二列重新绑定“ 销售省份 ”。

    PixPin_2025-07-02_10-38-36

  3. 删除一级分组尾和二级分组尾,删除后效果如下图所示。

    PixPin_2025-07-02_10-37-56

3.2 添加汇总行

添加省份和大区的订单金额汇总。

  1. 如下图所示,分别选中第三列对应的一级分组单元格和二级分组单元格,添加表达式 {Sum(订单金额)}

    当函数用于分组中时,默认的计算范围是当前所在的分组。 比如在二级分组的单元格中添加 {Sum(订单金额)} 时,它的计算范围就是二级分组,即“ 销售省份 ”。

    PixPin_2025-07-02_10-42-26

  2. 此时预览报表,可以看到已经得到了各销售大区和销售省份的销售总额。

    PixPin_2025-07-02_10-43-42

3.3 添加占比情况

  1. 在表格右侧添加两列,并将标题行合并,输入“ 占比情况 ”。在一级分组、二级分组以及明细行分别输入“ 大区/全国 ”、“ 省份/大区 ”、“ 订单/省份 ”。

    PixPin_2025-07-02_10-47-28

  2. 添加计算表达式。

    1)单击分组列表中的二级分组,然后复制分组名称待用。

    PixPin_2025-07-02_10-48-57

    2)单击明细单元格,输入表达式 {订单金额 / Sum(订单金额, "表格1_销售省份1")}。

    其中“ 表格1_销售省份1 ”即上一步中复制的分组名称,用来指定sum函数的计算范围为二级分组,也就是计算销售省份范围内的求和。

    PixPin_2025-07-02_10-50-28

    3)同理,为二级分组单元格添加表达式。将一级分组的分组名称作为二级分组表达式中分母的计算范围。表达式为 {Sum(订单金额) / Sum(订单金额, "表格1_销售大区1")},其中“ 表格1_销售大区1 ” 为一级分组的名称,指定Sum 函数的计算范围为一级分组,也就是计算销售大区内的求和。

    PixPin_2025-07-02_10-51-09

    4)接下来,为一级分组添加表达式。此时要计算的是大区的总销售额在全国范围内的占比。此时没有全国这个分组概念,我们使用数据集的名称或者当前数据区域的名称作为计算范围,来计算全国的数据。表达式为: {Sum(订单金额) / Sum(订单金额, "表格1")} 或者 {Sum(订单金额) / Sum(订单金额, "销售数据")}

    PixPin_2025-07-02_10-52-03

    表达式 {Sum(订单金额) / Sum(订单金额, "表格1")} 中“表格1”名称来源如下图所示

    表达式 {Sum(订单金额) / Sum(订单金额, "销售数据")} 中“销售数据”名称来源如下图所示

    PixPin_2025-07-02_10-52-38

    PixPin_2025-07-02_10-55-10

    type=info

    提示: 此时也可以使用nothing作为函数的计算范围。在数据区域内,scope参数为nothing时,函数计算范围为当前所属的最外层数据区域(本例中为整个表格区域)。表达式即为:{sum(订单金额)/Sum(订单金额,nothing)}

3.4 调整属性样式

  1. 调整数据格式。选中各占比单元格,在右侧的属性设置面板中设置其数据格式为百分比。

    PixPin_2025-07-02_10-57-00

  2. 预览报表。可见经过为函数指定计算范围,我们已经得到了需要的数据。

    PixPin_2025-07-02_11-07-20

    type=info

    注意

    • 只有直接或间接包含表达式的分组(或数据区域)才能作为计算范围。

    • 如果表达式位于数据区域内(如本例中用到的所有表达式都在表格组件内),则对于所有集合函数,计算范围都是可选参数。如果省略计算范围,则聚合的范围就是表达式所在的分组。如果将计算范围指定为Nothing,则表示计算范围是表达式所在的数据区域。

    • 如果表达式位于数据区域外(比如在表格组件外的文本框中添加的表达式),Scope参数仅能使用数据集而不能使用数据区域和分组。如果报表中只包含一个数据集,Scope参数可以省略,此时默认计算范围即为该数据集。如果报表中包含多个数据集,则必须使用Scope参数指定计算范围。并且此时不能使用Nothing关键字作为计算范围。

    • 在页眉或页脚中不能使用Scope参数。