概览
内容工具
我们先来看下面这张报表,这张报表中除了展示数据明细外,还展示了各大区和省份的总销售额以及不同级别销售额的占比情况,包括各大区在全国的占比、各省份在所属大区的占比以及单个订单在全省的占比。
那么在数据集中仅有“订单金额”字段的情况下,怎样才能得到这些计算结果呢?
我们稍加分析:
不难发现,实现示例效果的关键在于计算出各区域范围内的订单金额求和。
我们已知“订单金额”数据字段和Sum求和函数,欠缺的正是本节即将为您介绍的“计算范围”。在使用Sum函数对“订单金额”求和时,增加“计算范围”参数,即可得到指定范围内的运算结果。
在报表中不仅是Sum函数,其他所有集合函数以及带Scope参数的函数,都可以指定计算范围,从而使函数仅在指定的范围内进行运算。这也就是“计算范围”的含义。
报表中的计算范围有三种,分别为:数据集、数据区域和分组。实际应用时,将这三种范围对象的名称作为scope参数添加到函数表达式中即可。
数据集和分组的概念之前已经介绍过,那么数据区域指的是哪个范围呢?
所谓数据区域,简言之就是在报表当中用于展示数据集数据的区域性组件,具体包含使用表格组件设计报表、使用矩表组件设计报表、使用图表组件设计报表和列表这四种组件。
通过之前对这四种组件的了解,可以看出数据区域组件与普通组件的关键区别在于:数据区域展示的条目数会随着数据集中记录数的变化而变化;而其他普通组件展示的仅是一个结果,当数据集中的记录数发生变化时,结果的值可能会改变但结果本身的个数不会发生变化。
现在我们对这三种计算范围的概念都有了一定的了解,接下来就以开篇的报表为例为您介绍计算范围的具体应用方法。
(1) 新建报表,添加基于WynDemoDataV3的数据集。然后添加表格组件,并将“销售大区”和“销售省份”拖拽到分组窗格中添加两级分组。
(2) 表格明细行绑定数据,为了显示层级更为明显,我们将二级分组头第一列默认绑定的字段删除,在第二列重新绑定“销售省份”。
(3) 删除一级分组尾和二级分组尾,删除后效果如下图所示。
(4) 添加省份和大区的订单金额汇总。如下图所示,分别选中第三列对应的一级分组单元格和二级分组单元格,添加表达式 {Sum(订单金额)}。
当函数用于分组中时,默认的计算范围是当前所在的分组。
比如在二级分组的单元格中添加 {Sum(订单金额)}时,因此它的计算范围是二级分组也即“销售省份”。
此时预览报表,可以看到已经得到了各销售大区和销售省份的销售总额。
(5) 在表格右侧添加两列,并将标题行合并,输入“占比情况”。在一级分组、二级分组以及明细行分别输入“大区/全国”、“省份/大区”、“订单/省份”。
(6) 添加计算表达式。
单击分组列表中的二级分组,然后复制分组名称待用。
2. 单击明细单元格,输入表达式 {订单金额 / Sum(订单金额, "表格1_销售省份1")}。
其中“表格1_销售省份1”即上一步中复制的分组名称,用来指定sum函数的计算范围为二级分组也就是计算销售省份范围内的求和。
3. 同理,为二级分组单元格添加表达式。
将一级分组的分组名称作为二级分组表达式中分母的计算范围。表达式为 {Sum(订单金额) / Sum(订单金额, "表格1_销售大区1")}
其中“表格1_销售大区1” 为一级分组的名称,指定Sum 函数的计算范围为一级分组也就是计算销售大区内的求和。
4. 接下来,为一级分组添加表达式。此时要计算的是大区的总销售额在全国范围内的占比。此时没有全国这个分组概念,我们使用数据集的名称或者当前数据区域的名称作为计算范围,来计算全国的数据。
表达式为:{sum(订单金额) / Sum(订单金额, "表格1")} 或者 {sum(订单金额) / Sum(订单金额, "销售数据")}
表达式中数据集和数据区域的名称来源如下图所示。
提示
此时也可以使用 nothing 作为函数的计算范围。
在数据区域内,scope参数为 nothing时,函数计算范围为当前所属的最外层数据区域(本例中为整个表格区域)。
表达式即为: {sum(订单金额) / Sum(订单金额, nothing)}
(7) 调整数据格式。选中各占比单元格,在右侧的属性设置面板中设置其数据格式为百分比。
(8) 预览报表。可见经过为函数指定计算范围,我们已经得到了需要的数据。
注意