众所周知,Smartbi产品功能十分强大,涵盖了丰富的报表资源类型来支撑各类场景报表实施开发,其中最常用的功能之一自然少不了【合计】,可在实际开发过程中是否经常不知道从何下手?
本篇文章小编将从几个场景出发,带大家全方位了解 如何在各类报表中实现合计(小计)。
一、该用什么
根据不同资源类型的功能定位,不同需求场景下适用的报表类型不同,以下是常用的一些合计场景的汇总。
应用场景
|
适用的资源类型
|
优势
|
劣势
|
适用的人员类型
|
进行大数据量明细数据查询,无分类汇总需求
|
即席查询
|
自助勾选字段快速查询
|
不支持计算度量等二次计算
|
业务人员
|
电子表格-清单表
|
在Excel上开发界面更为用户熟悉
|
需要借助Excel插件开发
|
技术人员
|
web电子表格-清单表
|
支持信创,无需插件可网页上直接开发
|
无法快速自助查询
|
技术人员
|
类Excel透视效果,按行/列生成分类汇总
|
透视分析
|
配置项快速生成分类汇总
|
无法自定义合(小)计名称
|
业务人员
|
电子表格-分组交叉表
|
使用Excel公式实现更为用户熟悉,表样更为灵活
|
无法在浏览态一键生成
|
技术人员
|
web电子表格-分组交叉表
|
支持信创,无需插件可网页上直接开发
|
无法在浏览态一键生成
|
技术人员
|
仪表盘大屏中常见组件合计/按指定成员聚合/按前N合计
|
仪表盘-交叉表
|
配置项快速生成分类汇总
|
无法自定义合(小)计名称
|
业务人员
|
仪表盘-表格树
|
树状结构表样,配置项快速生成分类汇总
|
无法自定义合(小)计名称
|
业务人员
|
仪表盘-汇总表/文本/指标卡
|
嵌入大屏展示
|
需计算度量二次加工
|
技术人员
|
柱图添加一条合计柱子
|
仪表盘-柱图
|
嵌入大屏展示
|
需计算度量二次加工
|
技术人员
|
电子表格-echarts图形
|
可提前在单元格自定义实现
|
需借助Excel插件开发
|
技术人员
|
更多仪表盘明细/汇总/交叉表组件特点可见:速看!明细/汇总/交叉表的实现秘籍
二、该怎么用
场景1、进行大数据量明细数据查询,无分类汇总需求
新即席查询定位是用于清单明细查询,为保证性能默认不支持合计,一般若只需要进行大数据量明细数据查询,可通过新即席查询快速查询,电子表格/web电子表格也有支持清单表类型,但开发步骤相对繁琐。

根据大部分项目需求场景,如有合计需求建议改用其他报表类型(如新透视分析、仪表盘表组件、电子表格等)实现,一般所有维度成员设置聚合建议改用仪表盘交叉表组件、透视分析进行分类汇总,若存在维度字段一样的内容会自动分组合并;如不希望分组合并效果则建议改用电子表格。详细合计配置可见下文。

场景2、类Excel透视效果,按行/列生成分类汇总
实现方式:分类汇总可在行区/列区字段上右键点击,选择 分类汇总 > 显示,分别实现数据的列数据汇总和行数据汇总。

其中第一个分组字段的分类汇总显示为“合计”,其它分组字段的分类汇总显示为“小计”,暂不支持界面上自定义名称。
为了使小计合计数据更清晰的展示,还可以在 设置 > 属性 > 合计行/列 上调整合计行/列的显示位置以及样式。

小Tip:在单元格上同时有合计和小计的样式时,交叉单元格以合计的样式显示。如下图:

方式一:
通过新建数据模型汇总查询,分类汇总提前计算出合计,实现步骤如下(以web电子表格为例)
1.在web电子表格中新建模型汇总查询,勾选行列度量区字段,并设置分类汇总;


2.拖拽字段到单元格,并设置扩展属性;

3.保存查看预览效果如图;

方式二:
清单表/分组表一般均可借助于Excel公式,比如sum进行合计/小计,以电子表格为例实现步骤可见:电子表格-小计/合计
如不希望分组合并单元格,每个单元格都展示出来,可直接配置分组不合并单元格即可。

注:更多复杂表样的合计需求场景需结合实际情况分析使用哪些excel公式实现,一些复杂公式可借助AI工具辅助修改,但因第三方插件对于新版本的公式兼容情况较差可能无法返回正确结果,建议少用新版本的Excel公式(如SEQUENCE等等)。
场景3、仪表盘大屏中常见组件合计/按指定成员聚合/按前N合计
交叉表组件和树状表组件可通过分类汇总设置快速生成全局合计效果。
设置方式基本同透视分析:在 产品类别、产品名称 和 订单年份 字段上分别设置显示分类汇总,设置入口及效果如下图所示。
行区合计:在产品类别上显示的分类汇总,生成所有产品类别每年销售额的合计。
行区小计:在产品名称上显示的分类汇总,生成各个产品分类中所有产品每年销售额的小计。
列区合计:在订单年份上显示的分类汇总,生成各产品/产品分类在2020年和2021年的合计数据

拓展:交叉表常见的乘积合计优先级问题
交叉表中的合计的值有两种计算可能:一种是横向的计算,一种是纵向的计算,不同场景下需要不同方向的合计,这就涉及到计算优先级的指定。
通过计算度量-乘法生成的字段,开启分类汇总时,默认情况下,计算度量是先算小计/合计再算表达式,也就是 sum(a) * sum(b);


如果要先按照明细算表达式再合计,可考虑改成计算列,那就是 sum( a * b )


若希望先按分类汇总,再乘积计算后按照纵向合计,可通过修改自定义度量的计算优先级来实现,SOLVE_ORDER=40,$aggregation_type='sum'
注:此函数仅支持在2025年以后的V11 smartbi版本中调用此函数;且用此函数指定优先级后,无法走SQL 2.0引擎,走数据模型引擎,可能会对性能有一定影响。


【汇总】三者情况对比:

(1)树状表组件的分类汇总,是按照每个层级独立获取指标数据,如下图所示:
比如 2527是2020年河北省当前节点的销售量,而不是石家庄+张家口+秦皇岛的总销售量,此种展示逻辑也符合不能汇总的指标数据。

(2)树状表默认会显示分类汇总,支持设置取消分类汇总,在行区时,取消分类汇总只有在展开节点时才能看到效果,如下图所示:
比如在发货城市上取消分类汇总,是否显示分类汇总需要在发货城市的上级省份那里查看,此时展开的省份节点将不显示数据。

汇总表/文本/指标卡组件本身不支持设置字段分类汇总,则可结合特定聚合场景研究尝试通过计算度量等方式二次加工实现。
自定义合计-场景1:指定成员聚合
例如发货城市维度有很多个值,想实现发货城市为北京、上海、深圳对应销售量的汇总值
1.可通过计算度量-向导的方式实现,具体操作可参考如下:

2.也可通过计算度量-函数Aggregate实现,具体操作可参考如下:

最终效果:

自定义合计-场景2:计算前十分类度量值
可通过自定义计算度量实现。具体步骤如下:
1.创建计算度量
(1)获取前10的类别
topcount(维度.members,10,度量)
(2)按类别汇总
aggregate(类别,度量)
最终效果:

2.拖拽到组件上

场景4、柱图添加一条合计柱子
常见场景:在柱图最后添加一列合计轴

实现步骤:
数据模型中添加一个计算成员,根据下图中,选择对应的层次结构和维度字段。点击保存后在仪表盘中拖入维度字段作图即可。

需要注意的是,若是维度字段新建计算成员处理,后续使用该模型的字段,都会有这个合计的行记录存在。

电子表格可以进行echarts作图,有多种实现方案。

方式1:可以在excel里面直接设置好数据,之后插入图形,如下图:

方式2:在依赖的数据集SQL里提前算好合计并union起来,之后基于数据作图,sql可参考以下说明
select name,num from b
union
select '合计' ,sum(num) from b

以上就是本次全场景报表合计的全篇内容啦,期待各位在了解上述合计使用实现方式后,能在后续报表开发中更加得心应手,也欢迎大家在评论区讨论各种报表合计的小技巧哦~
|