集智平台纵向分组统计横向分栏的报表实现
问题背景
有客户在使用集智平台中提出下图需求,报表分栏的同时进行纵向分组并汇总。
分析
集智平台中报表 提供了分栏的功能,但是效果同客户需求有较大出入,所以需要使用其他的方式方法实现。一般带有序号的报表我们可以根据序号的规律,通过行列扩展实现数据分栏的效果。我们来看一下具体实现。
实现步骤
首先,我们看报表数据集中的数据
报表制作如下
其中, C1 单元格表达式: =to(1,4) ,表示分栏数为 4 ,横向扩展,此处扩展要从 1 开始 ;
A2 表达式: =ds1.group(area,false) ,对地区分组,纵向扩展;
B2 表达式: =if(ds1.count()%4==0,ds1.count()/4-1,int(ds1.count()/4)) ,决定每个分组下应该扩展的行数;
D2 表达式: =” 总计: “+ds1.count() ,求各地区下合计;
B3 表达式: =to(0,B2) ,各分组下数据纵向扩展行,此处扩展从 0 开始 ;
C4 表达式: =ds1.select1(num,num==B4*4+C1) ,取数中需要根据横向和纵向扩展行列数限定,此处使用效率较高的 select1 函数 ;
D4 表达式: =ds1.select1(data,num==B4*4+C1,,,,true) ,取数同 C4 ,不过此处要从根集里取,增加第 6 个参数为 true ;
最后,将报表中不需要显示的行列都隐藏即可。我们来看一下效果: