反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

动态显示前N个分组

  • 文档创建者:axing
  • 历史版本:8
  • 最近更新:Catqiu 于 2021-11-17
  • 1. 概述

    1.1 问题描述

    报表应用中,分组汇总的数据展示只需要展示前几项占比较高的类别,剩余占比小的类别通常合并为其他类,使得展示的表格看上去更简洁明了。那么报表在普通分组的情况下,如何实现动态的显示前 N 个分组,后面的分组合并为其他呢?效果如下图所示:

    2020-09-27_14-57-26.gif

    1.2 实现思路

    在「单元格元素」>「数据设置」位置,通过自定义公式分组实现。

    2. 示例

    2.1 模板准备

    1)新建数据集 ds1,sql 语句为:SELECT * FROM 销量 where 产品='苹果汁' order by 销量 desc,如下图所示:

    image.png

    2)依次将 ds1 中销售员、产品类型、产品、销量字段拖入 A2、B2、C2、D2 单元格,设置模板样式,如下图所示:

    image.png

    3)点击 D2 单元格,在「单元格元素」>「数据设置」位置,选择「汇总-求和」,将 D2 单元格数据类型设置为按组汇总求和,如下图所示:

    2020-09-20_8-47-46.jpg

    2.2 设置下拉框控件

    添加下拉框控件,控件用来选择需要显示的前几个分组。

    1)新建模板参数 TOPN。点击「模板」,选择「模板参数」,新建模板参数「TOPN」,默认值处类型选择「整型」,如下图所示:

    2020-09-27_15-06-25.jpg

    2)在参数面板中添加 TOPN 参数,选择控件类型为 「下拉框控件」,在「数据字典」处选择数据类型为「公式」,实际值处写入公式:range(1,8) ,为下拉框添加可以选择的数字值,如下图所示:

    注:RANGE(from,to,step)函数表示从整数from开始,以step为每一步的大小,直到整数to的一个数字序列。

    2020-09-27_15-17-30.jpg

    2.3 自定义分组

    1)选中 A2 单元格,在「单元格元素」>「数据设置」位置,依次选择「分组-高级-自定义」,如下图所示: 2020-09-20_8-56-28.jpg   

    2)点击「自定义」位置,自定义分组方式选择「公式分组」,显示模式选择「普通分组」,在「自定义值」位置写入公式:if(inarray($$$,ds1.select(销售员))<=$TOPN,$$$,"其他"),将第 N 个销售员之后的所有销售员合并为其他,如下图所示:

    2020-09-27_15-26-42.jpg

    公式解释:

    步骤
    作用公式说明
    ds1.select(销售员)取 ds1 数据集中销售员列tablename.select(colname):选出数据集某列的数据,返回结果是一个数组
    inarray($$$,ds1.select(销售员))获得当前单元格销售员在销售员列中的位置inarray(co,array):返回 co 在数组 array 中的位置,如果 co 不在 array 中,则返回 0
    if(inarray($$$,ds1.select(销售员))<=$TOPN,$$$,"其他")将位置大于 N 的销售员更名为其他

    IF(boolean,string1,string2):判断函数,boolean 为 true 时返回 string1,为 false 时返回 string2

    $参数名:引用参数

    2.4 效果预览

    2.4.1 PC 端

    保存模板,点击「分页预览」,效果如 1.1 节所示:

    2.4.2 移动端

    App 及 HTML5 端预览效果如下图所示:

    09714f06-13a3-4e28-ab5f-3acdee4f68db.jpg

    3. 模板下载

    已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\primary\GroupReport\动态显示前N个分组.cpt

    点击下载模板:动态显示前N个分组.cpt

    附件列表


    主题: 报表应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526