报表工具对比选型系列用例——过程计算拾光石艺

我们知道,报表呈现的数据常常并不是直接从数据库(源)取出来的数据,而还要进行一些运算,报表工具通常也会提供一定的运算能力(如过滤、分组等)以应对这种需求。但是,情况复杂时,报表数据集上的运算可能要多个步骤才能完成,这时候就要考查报表工具对过程式计算的支持程度了。

统计要求

列出指定时段的大客户。所谓大客户,定义为销售额占前一半的客户,也就是把客户销售额从大到小排序后,前面若干个客户的合计销售额构成总销售的一半,这些客户被称为大客户。

报表式样

数据结构

[销售记录表]

特点分析:

这个报表式样很简单,主要麻烦之处在于需要从原始数据集计算出大客户后再呈现,而这个计算并不是简单一步能完成的。

我们的重点是考查报表工具的过程计算能力,所以假定不使用SQL或数据源的计算能力来完成。

制作过程:

1、配置并连接数据源。

2、设置数据集

润乾报表提供了一个独立的计算引擎,可以通过内置的脚本实现对数据的计算并将结果返回给报表数据集,在报表中新增数据集,数据集类型使用脚本数据集,脚本如下:

2.1A1格:单元格做了数据源的连接,然后A6单元格在执行完毕后关闭连接。

2.2A2:从客户销售表中取数,此处根据客户名称做了汇总,并且按照销售额降序排序。

2.3A3:对销售额进行求和操作并处以2,取出总金额的一半,用于判断大客户。B3设置初始值为0,用于做销售额累加操作

2.4A4:对销售额进行累加,取出累加金额大于A3中对应的A2的序号

2.5A5:根据序号取A2中对应的值,并做为结果集返回给报表

3、设计报表模板

脚本数据集中返回的数据就是大客户的数据信息,所以制作报表就相当简单,设置如下::

3.1、A2、B2单元格直接取数据集中的数据

3.2、B3、B4单元格直接用数据集汇总函数,对数据集计数取出大客户数量,对销售额用avg函数取出平均销售额。

3.3、设置边框、金额显示格式。

运行结果:

完成后点评

1、0.5小时,使用脚本数据集中内置的语法,几个单元格的处理就能快速实现需求。

2、可以使用脚本数据集,内置丰富语法规则,能快速处理各种复杂的数据统计要求。

3、报表设计简单,并且不需要辅助单元格,报表计算效率高。

增加数据库查询,SQL为:SELECT客户,sum(销售额)销售额FROMDEMO.客户销售表groupby客户orderby销售额desc

3.1B2单元格取总销售额的一半,用于判断大客户,单元格内对销售额求和,并设置自定义显示公式$$$/2,帆软对字段汇总后如果再进行计算,无法直接在单元格里手动加表达式,只能设置自定义显示公式。

3.2A3、B3单元格取数数据集中的客户和销售额字段。

3.3C3:求累计金额,=B3+C3[A3:-1],增加条件属性,对非大客户的数据进行隐藏。

3.4B4:大客户数量,=count(B3[!0;!0]{C3<=B2||(C3[A3:-1]=B2)}),用count函数统计累计销售大于总销售额一般的数量。

3.5平均销售额,=sum(B3[!0;!0]{C3<=B2||(C3[A3:-1]=B2)})/B4,设置单元格的格式保留两位小数。

3.6将不需要展现的行列设置隐藏。

报表结果

1、用时1小时。

2、累计实现可以通过内置的层次函数LAYERTOTAL(B1,C1,D1)实现,也可以通过层次坐标,本例使用的是层次做表方式,内置功能比较丰富。

3、可以根据条件公式动态设置报表行列的动态隐藏。

4、需要增加辅助单元格,会增加额外资源的耗用,尤其是客户数量多时,报表中是取出了所有客户信息(小客户数量常常多得多),然后再判断隐藏,数据量大时报表计算性能会有影响。

制作过程

采用原生SQL数据集,直接通过SQL语句取数就行:

select客户,sum(销售额)金额from客户销售表groupby客户orderby金额desc。

报表的设计在excel内完成,借助丰富的excel函数,smartbi解决这种格间运算也不是太麻烦。如几个关键计算:

3.1D1:所有客户的销售总金额,D2中写入表达式=D1/2,取总销售额的一半。

3.2D3格:累积金额,=SSR_GetCell(D3,B3,-1)+C3。

3.3E3:=IF(SSR_GetSubCells(D3,B3)>D2,1+SSR_GetCell(E3,B3,-1),0),根据累积金额,标识当出现累积金额大于总金额一半的时候标识为1,后面累计值依然大于总金额一半,数值累计为2/3/4(用于隐藏后面不要的数据)等

3.4C4格:=MATCH(1,SSR_GetSubCells(E3,A3),0),根据E3的标识,查找第一个出现的1所在的序号,该序号即标识大客户数。

3.5C5格:平均销售额相对简单,=D4/C4,并设置报表中数据显示格式

3.6隐藏行设置,需要隐藏掉非大客户数据,不支持表格内定义隐藏表达式,这里根据E3值大于1的就隐藏,要借助平台给电子表格设置宏(需要写js代码)实现:

运行结果

完成后点评:

1、用时:1.5小时。

2、完全在excel中操作,容易上手,操作起来比较方便。excel函数丰富,这个报表主要是其查找类函数的使用。

3、隐藏不需要(除大客户外)的客户数据时,不支持表格内定义隐藏表达式,需要js代码才能实现,难度较大。

制作过程:

使用SQL语句数据集:select客户,sum(销售额)金额from客户销售表groupby客户orderby金额desc

3.1第一列增加了个按销售额取数,实际中发现数据集中虽然按照销售额排序了,但是直接取出客户名称字段时,即使不排序,也不会按照数据集原有数据排序,所以前边增加了个销售额字段,并且设置降序排序。

3.2第四列中取出了总销售额以及对应的累计销售额,累计销售额直接拖拽,设置下格间计算未累计就行

3.3大客户数量单元格使用格间计算,里边表达式为:

vara=0;

for(vari=1;i<=ridx-1;i++){

if(cell(i,3)>=cell(0,3)/2){

a=i;

break;

}

通过js语法,对行列循环,判断累计值是否大于销售额总计的一半,返回对应行数也就是数量。

3.4大客户平均销售额同样的做法:

for(vari=1;i<=ridx-2;i++){

a=cell(i,3)/i;

3.5第一列和第四列是辅助列,右侧有个隐藏列设置,将这两列隐藏掉

3.6隐藏行设置,永洪不支持单元格隐藏行表达式,如果要隐藏掉非大客户数据,需要通过js语句实现,可以在js中获取到报表计算后的行属性,根据3.3中获取的大客户数量动态设置非大客户(报表计算后行号超过大客户数量的行)行高为0,来达到隐藏的效果,这个和Smartbi有些类似,这里就不具体实现了。

2、格间计算中可以用js语法进行数据的计算,适合开发人员操作,比较灵活,但同时内置函数少,比较考验开发人员能力。

3、累计设置比较方便,直接用内置的语法就行。

4、排序设置有问题,数据集中设置了数据的排序,但是报表里默认不会按照相应的顺序排序(也可能没找到方法)。

5、需要增加辅助列来实现,比如累计列,如果数据量大会额外占用内存空间。

6、可以设置隐藏列,但是设置后设计界面也就无法看到该列,无法还原,而且如果数据集变动而隐藏列里引用了变动前的字段,很难更改。

7、需要增加辅助单元格,会增加额外资源的耗用,尤其是客户数量多时,报表中是取出了所有客户信息(小客户数量常常多得多),然后再判断隐藏,数据量大时报表计算性能会有影响。并且隐藏掉非大客户信息时,需要写复杂的js,难度较大。

1、配置并链接数据源

直接通过SQL语句取数就行:SQL语句为:selectcustomer,sum(sales)assalesfromsalesgroupbycustomerorderbysum(sales)desc

3.1A1:=sum(TEST.sales)/2计算所有客户的销售总金额的一半,并在右侧属性里设置隐藏属性

3.2A3:=TEST.customer浮动维字段,同时在右侧设置排序的依据是B3。

3.3C3:=self.leftcell.value+self.upcell.value实现金额累计计算

3.4D3:=if(GRID1.C3.upcell.value

3.5B4:=sum(GRID1.D3$),根据D3的标识统计出来大客户数量(D3中大客户返回1,对1求和就是大客户数量)

3.6B5:=GRID1.D3$.select(@.value=1).select(true,@.leftcell(2).value).avg()先使用数组的方式过滤出来对应的数据,然后再进行求平均的计算

3.7选中第3行设置显示表达式为:<#=if(GRID1.D3=1,1,0)#>,D3单元格标识出了本条数据是否是大客户,这里根据D3单元格值控制本行是否显示(如果为1则返回1表示显示,否则返回0不显示)

1、制作用时:1.5小时

2、内置函数比较丰富,本表中常用操作基本上都是通过内置函数实现。

3、可以根据条件公式动态设置报表行列的动态隐藏,比较方便。

这个例子报表结果格式相对比较简单,各个报表工具基本上都能实现。

对于本例中考查的过程计算,帆软、Smartbi、永洪、亿信这四款工具实现方法基本一致,都是通过辅助行列取出销售额总计、累计销售额,然后进行数据判断来确定哪些客户是大客户并对数据统计,最后将辅助行列再隐藏掉。整个过程有一定的难度和繁琐度,这是因为报表只能执行状态式计算,用来处理过程计算就只能采取这种迂回的办法。

这几款产品之间来看,帆软、Smartbi、亿信基本上一致,都是使用内置函数或者方法实现,隐藏行列也比较方便。而永洪累计实现方便,直接通过鼠标设置就行,但是做数据统计时就要写复杂的javascript语法来统计,这块实现难度比较大,而且隐藏行列设置也不太方便。永洪的复杂报表功能相比其它三款要更弱一点,帆软在这四款中相对更好,这和之前测试其它案例的结论也一致。

润乾事实上也可以采用隐藏格手段实现,但我们在这里则提供了一种与众不同的方法。润乾增加了一个计算层,使用脚本数据集,可以更方便地实现过程式计算,返回给报表就是处理后的数据结果,报表中不再做特别处理,整体过程更为简单,而且消耗资源也比使用辅助格要少得多,性能会更优。仍然是和之前测试案例的结论一致,润乾是这几款产品中拥有最强计算能力的产品,计算层明显拉开了和其它产品的差距,这对于高效开发复杂报表是至关重要的。

我们再通过一个例子在看计算层的意义,查询股票最长连续上涨的天数:

数据源是一个文本,记录各支股票的每天的收盘价:

这个报表的样式也很简单,但计算过程要更为繁琐:需要先将按日期过滤后的数据集按股票代码分组,再计算出每组股票连续上涨的天数,然后再过滤出超过5天的股票。

这种复杂的过程,如果没有计算层的协助,使用隐藏格就是个非常麻烦的过程,大体描述如下:

1、取出文本数据集,放入单元格中

2、设置排序,按股票代码和日期排序

3、按股票代码分组,做成两层报表

4、在明细行增加辅助格计算连续上涨的天数

5、在分组行计算最大连续上涨的天数

6、将明细行隐藏

7、将非指定日期和不满足条件的分组隐藏。

这个过程,对于帆软这种格间计算能力较强的报表工具,还只是繁琐;而Smartbi、永洪和亿信这些就不只是繁琐的问题,中间的计算也很难表达。并且,无论是哪一款工具,都会导致整个报表臃肿,有大量的隐藏格(远远多于呈现出来的格子)。

要避免这些,实际使用的办法常常会借助自定义数据源,用Java读出数据把结果集计算好,或者把数据导入数据库用SQL来算。无论哪种方法,都依然非常繁琐,严重影响开发效率。

但是,如果像润乾报表一样有个可解释执行的计算层的话,那就会很简单,实现这个逻辑也不需要几行代码:

A1:=file(“F:/股票信息.txt”).import@t().select(left(string(Date),7)==rq),读取股票信息中的数据,并根据报表中传入的rq参数进行数据过滤,取某月数据

A2:=A1.sort(Date).group(SID),按照日期排序,并根据SID字段分组

A3:go=A2.new(SID,~.group@i(Closing>Closing\[-1\]).max(~.len()):ts),Closing[-1]取当前记录上一条的收盘价,A3中根据同一只股票当天收盘大于前一天收盘价来取最大连续上涨天数。

A4:returnA3.select(ts>=5),取出A3中最大连续上涨天数大于5的数据,返回给报表数据集使用。

由于脚本数据集中已经处理好了数据,报表中制作就相当简单了,就不用具体解释了。

润乾的优势非常明显,即使不考虑它特有的计算层,其复杂报表能力也是这五款产品中最强的。再加上计算层,可以说是遥遥领先,和其它几款产品相比已经差出档次了。

帆软居次,如果抛开润乾特有的计算层,帆软的复杂报表能力和润乾相比还是会弱,但相差不算很大了,而且帆软友好的界面能够再加分,可以认为润乾和帆软是第一档的产品,把复杂报表作为宣传点都算是名符其实的。

Smartbi就要弱一些,模型基本实现了,但表达式细节和润乾帆软差得不少,可以算作是第二档的产品。把复杂报表作为宣传点,在BI领域中也还勉强说得过去。

永洪和亿信,严格地说,其复杂报表能力还处于没入门的阶段,和其它几款产品相比的差距非常大。只能算作第三档甚至不入档的产品了,其实这两款产品本来是BI色彩很强的产品,把复杂报表作为宣传点就有点名不符实了。

THE END
1.产品清单Excel表格模板下载熊猫办公网站共为您提供389个产品清单设计素材以及精品产品清单Excel表格模板下载,汇集全球精品流行的产品清单Excel表格完整版模板,下载后直接替换文字图片即可使用,方便快捷的不二选择。https://www.tukuppt.com/excelmuban/chanpinqingdan.html
1.excel表格中我想把多张表格中同一种型号产品的数量统计要怎么做才...excel表格中我想把多张表格中同一种型号产品的数量统计要怎么做才可以呀.不好意思是在一个工作簿里的很多个工作表,每个工作表里又有很种不同的型号.要怎么才能把各个工作表中同一种https://www.zybang.com/question/5217fdc9ef5f99caa8a5f7abc348f54d.html
2.按客户名称统计各产品订购数量表格范文样式Excel模板脚步网为您提供免费Excel模板素材按客户名称统计各产品订购数量表格范文样式Excel模板,找按客户名称统计各产品订购数量表格范文样式Excel模板Excel模板就上脚步网!https://www.jiaobu365.com/em/1708.html
3.生产车间产量统计表格(精选10篇)篇1:生产车间产量统计表格 焊管车间产量统计方法探讨 一、当前成品库与车间对焊管产量统计方法比较: 1、成品库统计数量=成品入库单数量之和 2、车间统计数量=质检报表数量+本班散支数量-打包入库的非本班散支数量 由于车间与成品库对焊管产量的统计口径不一致,造成两部门统计数据核对较为困难。 https://www.360wenmi.com/f/fileulu779pp.html
4.生产数量统计报表模板(生产数据统计分析表模板)参考资料来源:百度百科-车间统计机构 生产统计表怎么做 问题一:如何做生产销售统计表 厂产品生产销售月报统计表 ―――矗――― 日期-产品名称-生产数量-销售数量-库存-备注 ●●你划上格就可以了 问题二:怎样做好生产统计表 一般表格类,网上都会有无数的模版,建议您根据公司的性质和所在的行业,百度一下,相信会...https://www.huoban.com/news/post/130757.html
5.Excel统计函数COUNTIFS用法和实例教程实例2 统计指定类型、指定影院、指定时间的影片放映数量 当前表格中统计了各个影院、各个时间放映影片的类型,现在需要统计出“2013-1-1”这一天“雄风剧场”放映的“喜剧片”数目。 选中F2单元格,在公式编辑栏中输入公式: =COUNTIFS($D:$D,”雄风剧场”,$C:$C,”喜剧片”,$A:$A,”>=”&DATE (2013,1,1...https://www.ttoffice.net/excel/21350.html
6.wps表格重复的数据怎么统计数量和次数在WPS表格中,如果您想统计重复数据的数量和次数,可以使用SUMIF和COUNTIF两个函数来实现。首先,在需要...https://ask.zol.com.cn/x/20255096.html
7.产品月度出入库报表模板(加权平均法,含数据排名统计)1...仓储物流管理工具 产品月度出入库报表(加权平均法,含数据排名统计) 说明:本表格主要用于每月对本企业产品的出入库情况及库存进行统计。具体包括数量、价格、金额等数据,其中出库单价(成本价)、结存单价以及金额数据为自动计算(入库金额、报废金额需要手动输入)。注:本工具采取的是加权平均法(出库单价及结存单价为加权...https://doc.mbalib.com/m/view/b1644001c4e001ebfe8bcc7991871833.html
8.QC个人工作总结(通用12篇)QC在FPC的数量统计方面也做了很大努力,由于生产上有返工、返修板,滞留下来的板就造成了很多问题,有时管制卡过来了板没过来,有时板过来了管制卡却没有,有时一下子过来好几张管制卡,有时昨天过来是第9批的管制卡和板,而今天的是第7批的管制卡和板,就连冲切送板的人员也搞不清送的是哪批?所以在QC的分批次...https://www.unjs.com/fanwenwang/gerengongzuozongjie/20240701141134_8256212.html
9.福建省渔船动态监控管理系统建设项目附件5、需要落实的政府采购政策:进口产品,不适用于(合同包1)。节能产品,适用于(合同包1),按照《关于印发节能产品政府采购品目清单的通知》财库〔2019〕19号执行。环境标志产品,适用于(合同包1),按照《关于印发环境标志产品政府采购品目清单的通知》财库〔2019〕18号执行。信息安全产品,适用于(合同包1)。小型、微型企...https://zfcg.czt.fujian.gov.cn/upload/document/20200313/4415ba3976634b318eaf4671f4481c23.html
10.产品信息统计表格.xls备注1 1 门店编码 门店名称 货号 产品名称 规格 都必须填写 模板在1 2工作薄 2 2 产品日期与统计时间按表格模式填写 3 3 着重解决的问题用黄色标记 4 4 循环统计周期最长不超过20天 区域门店编码门店名称品牌货号 例如 平https://m.renrendoc.com/p-74712901.html
11.Excel表格怎么统计数量?学会这3种方法就够了然后用鼠标选中:C列,因为【大乔】和【小乔】,没有输入【年龄】,所以统计数量是:5个! Excel表格怎么统计数量 02通用计数:Count函数 第一种方法效率太低!建议大家使用:Count函数统计数量;不用看状态栏,仅需一键搞定! 首先单击:G2单元格,在编辑栏,输入Count函数:=COUNT(),然后用鼠标选中:C列,按回车键结束,即可...https://cloud.tencent.com/developer/news/1143092
12.统计表格表格模板下载excel表格制作统计表格仓库进销存系统自动统计表格 Excel格式/A4打印/内容可修改 立即下载  仓库进销存系统自动统计表格 22 52188 客户管理数量统计excel表格模板 Excel格式/A4打印/内容可修改 立即下载  客户管理数量统计excel表格模板 76 52109 人事管理各部门人员统计报表模板 Excel格式/A4打印/内容可修改 立即下载  ...https://www.55.la/excel/so_tongjibiaoge/list_h_1.html
13.药厂qc化验员工作总结(通用11篇)FPC从投料到入库应该是一个加工过程的完整闭合,目前最终的产品统计时,成品与次品的数量不吻合也是管理的一个大漏洞。虽然原因是多方面的:如制作样本、出货试验、不良分析、包装误差、备品出货等等,但应做到有凭据,有差数的原由。20xx年完善次品板和成品板的管理是QC内部管理的一项重要内容。https://mip.wenshubang.com/gongzuozongjie/142030.html
14.Excel表格怎样统计符合多个条件的单元格数量?excel表格汇总有很多数据,想要统计符合多个条件的段元个数据的数量,该怎样统计呢?下面我们就来看看详细的教程,需要的朋友可以参考下 教你在Excel软件中统计某个单元格区域里面符合多个指定的条件的单元格数目。 1、首先,打开你需要统计某个单元格区域里面符合多个指定的条件的单元格数目的Excel文件。如图所示。https://www.yingxiongyun.com/news/post/31763.html
15.企业准备采用控制图监控半导体的生产,每天统计报废产品数量,且...刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供企业准备采用控制图监控半导体的生产, 每天统计报废产品数量, 且每天产量变化, 应使用的以下控制图是 ( ) 。A.p图或np 图B.只能使用 p 图C.使用c图或 u 图D.只能使用 u 图的答案解析,刷刷题为https://www.shuashuati.com/ti/ebddae3b3dc043e0985c6c72595cbc5a.html?fm=bdb050dafe51339608c1fad2592f19f3fe
16.数量金额明细账类图片素材60张大气简约单产品按数量报价单表格模板 销售数量统计表EXCEL模板 装修施工主材数量表 销售数量统计表EXCEL模板 销售数量可视化模板 销售数量统计表 可视化图表数据产品数量成绩英文版本模板 半年度产品销量生产数量可视化分析图表 黑色销售数量可视化分析图表模板 产品数量统计可视化图表模板 ...https://so.ooopic.com/findsimilarity-25648975.html
17.人员分布图表怎么做人员统计表格怎么做在线数据图表很多大公司旗下都有专门的销售部门,而销售部门又是企业的核心所在,这些大公司旗下的销售数量往往是比较多的,所以公司在发展的时候,经常需要制作人员分布图表和人员统计表格,以确定哪个区域的销售力量不够。那么人员分布图表和人员统计表格怎么做?在线做数据图表用什么软件做最方便? https://www.fanruan.com/bw/?p=6609
18.企业电子统计台账程序操作指南企业电子统计台帐系统设置行业或产品代码: 分别切换到1-6月并抓取数据: 视频教程:10.4_垂直流水账.mp4 10.5水平流水账 不同月度的数据在同一个表格中以水平方向排列。这种格式的数据需要在制作模板时,在数据复制参数设置界面。 数据源格式: 1、“数量”(本月销售量)设置: ...https://blog.csdn.net/bq_cui/article/details/126735064
19.如何在Excel中统计相同产品的数量?BIM免费教程方法二:使用Excel表格筛选功能 除了COUNTIF函数之外,您还可以使用Excel的表格筛选功能来统计相同产品的数量。这种方法适用于需要筛选出某些产品然后再进行统计的情况。 步骤: 1. 鼠标点击数据表格中的任意单元格,然后在Excel的菜单栏上选择“数据”选项。 2. 在“数据”选项中找到“筛选”,并选择“筛选(Sort & Filte...https://www.tuituisoft.com/office/135082.html
20.Excel如何统计某数值数量溜溜问答 > 日常办公 > Excel如何统计某数值数量 Excel如何统计某数值数量浏览量:345Excel 数量统计 Excel数量统计 Excel如何统计数量 Excel统计数量 Excel统计数量 Excel表格数量统计 Excel表格 数量统计 Excel怎么统计红色数量 为您找到1500条“Excel如何统计某数值数量”相关问题...https://www.3d66.com/answers_relation/relation_3279074_2.html
21.《骑马与砍杀战团》怎么跑商跑商攻略1、跑商建议做利润大,产品数量充足的商品(香料、盐、香料、陶器等) 游戏六个月内物价会趋向于表格统计的平均值,前几个月最稳定的跑商城镇和商品是德赫瑞姆及其附属村庄的小麦和面包,帕拉汶的麦芽酒(亚麻捆),库劳的生铁,图尔加的香料,一到三月内,萨兰德四城镇的陶瓷价格会降到标准价格之下,三到六月内提哈,窝车则...https://www.9game.cn/news/9879128.html