东西,自己就是为领会决各类反复性工做效率低下的问题而降生的产品,报表东西也是东西,所以它的降生,它的任务,也是为了提效!是为了提拔数据信息化项目中报表的开发效率而降生的
但差别的东西,开发体例差别,效率天然也定胜败。效率高的,不只做起来简双方便,还能给项目上节省良多成本;效率低的,开倡议来省事吃力,不只工程师受不了,终年累月无形中浪费掉的人工成本,企业也受不了
那怎么才气选一个开发效率高的呢?开发效率应该怎么考察呢?
良多人在考察报表东西时,会存眷东西是不是有流利的可视化操做界面(厂家也喜好宣传那一点,零编码、拖拖拽拽做报表等等)。确实,有那种界面的东西很容易上手,能敏捷开工。但是,报表东西凡是是要持久利用的,那时候的重点其实是考察东西对于复杂场景的开发效率,因为持久利用后,总会碰着良多复杂的情况,而那种情况即使少,也是更费时吃力的。东西一时易上手的特征并非重点,因为法式员很快就会酿成熟手
下面我们用润乾报表,通过几个由简到繁的示例来看看报表东西的开发效率应该怎么考察
示例 1:简单分组
按照如下数据表,造做报表
按销售员、类别统计订单数量,并增加合计,成果报表:
造做过程
数据集设置
ds1: select * from orderlist
报表模板设想
A2:=ds1.group(NAME;NAME:1),根据销售员分组,能够手动输入公式,也能够报表设想器右下角选择分组体例拖拽:
B1:=ds1.group(CATEGORY;CATEGORY:1),操做体例同 A2,设置扩展体例为横向
B2:设想器右下角,选择汇总,汇总体例选择“计数”,拖拽肆意字段到 B2 单位格
B3、C2、C3:合计单位格,表达式手动输入:=sum(B2{})
报表成果
关于那类简单报表,各东西效率上根本没有什么差别,润乾报表是间接写表达式(也能够拖拽),其他东西有写表达式的,也有拖拽做的,都比力简单。有些东西的可视化的点击操做做得更人道化,体验更好,更合适初级进修人员
示例 2:带前提的分组
基于统一个数据表,我们改一下表样,略微增加一些难度,按照日期字段中的年来分组,看看差别产物的操做上有什么变革
根据年度统计产物的均匀售价,单笔采购数量差别、采购时间差别,产物的单价可能差别,产物均匀单价 = 总金额 / 总数量
成果表样:
造做过程
数据集设置
ds1:
SELECTORDERLIST.ORDER_DATE,ORDERLIST.PRODUCT,ORDERLIST.PRICE,ORDERLIST.AMOUNT FROM ORDERLIST
报表模板设想
A2:=ds1.group(year(ORDER_DATE);ORDER_DATE:1)+“年”,取字段的年并分组
B1:=ds1.group(PRODUCT;PRODUCT:1),按产物字段分组并设置横向扩展
B2:=ds1.sum(PRICEAMOUNT)/ds1.sum(AMOUNT),先通过 PRICEAMOUNT 算出金额,再停止汇总,然后除以总数量。
难度略微增加以后,润乾报表仍是只要在单位格里写简单的表达式就能够了,照旧简单。
但有些东西不撑持格子里自在写公式和前提,只能在对话框里设置,成果就是拖拽完根底表达式以后,还得翻开对话框设置一下前提才能够,好比那个按年分组
从那个报表就已经能够看出一些眉目了,ds1.group(year(ORDER_DATE);ORDER_DATE:1)+"年" 是写一个如许的表达式,仍是每次都多点几步对话框去设置,哪种办法的工做效率更高呢?只考察最简单的情况是看不出那些区此外
示例 3:再复杂一些的分组
仍是基于那个数据表,我们做个一个格局再复杂一些的表样
按销售人员统计优良订单的情况,优良订单指:回款日期在订单日期 30 日内且单笔订单金额 >=10000
造做过程
数据集设置
ds1:select order_date,price,amount,name,re_date from orderlist where substr(order_date,0,4)=‘2012’
报表模板设想
A3:=ds1.group(NAME;NAME:1),能够鼠标拖拽,也能够手动输入
B3:=ds1.count()
C3:=ds1.count(price*amount>=10000 and interval(ORDER_DATE,RE_DATE)<=30)
D3:=C3/B3,设置显示格局为“#0.00%”
E3:=ds1.sum(PRICE*amount)
F3:=ds1.sum(PRICE*amount,price*amount>=10000 and interval(ORDER_DATE,RE_DATE)<=30),前提表达式和 C3 一样,能够在 =ds1.sum(PRICE*amount) 根底上,间接将前提表达式复造过来
G3:将 D3 间接复造到 G3,单位格引用名称主动变革,显示格局保留
H3:=ds1.count(price*amount>=10000 and interval(ORDER_DATE,RE_DATE)<=30 and month(ORDER_DATE)>=10 and month(ORDER_DATE)<=12),在 C3 的根底上增加季度判断前提
I3:=H3/B3,设置显示格局为“#0.00%”
J3:=ds1.sum(PRICE*amount,price*amount>=10000 and interval(ORDER_DATE,RE_DATE)<=30 and month(ORDER_DATE)>=10 and month(ORDER_DATE)<=12),在 E3 的根底上,间接将 H3 的前提表达式复造过来
K3:将 I3 间接复造到 K3,单位格引用名称主动变革,显示格局保留
到那个例子,是不是已经觉得那些表达式写起来也没有多困难了,即便是初学者,也能随便看懂并写出来了,是的,有如许的觉得就对了,关于搞计算机的同窗,那确实不难
再来看看其他的一些只能通过对话框来设置前提的东西处置如许的情况会如何
每增加一个前提,一个 and,就得点一次增加,若是要修改,删除,同样得挨个去点,每次设置还都得翻开、封闭一次对话框
若是每次都得如许,估量初学者也不会觉得简单而是会感应费事了,更别说纯熟的老同窗了如许无端端多出了好多没需要的操做,会浪费良多的时间,削减良多产出
懂了表达式以后,仍是间接写表达式更快更好,可视化操做看上去很美,但效率其实不会高
末节
从上面三个报表我们能够看出,简单的表样,可视化的对话框设置确实利用体验更好,但格局略微变复杂一点以后,工程师已经掌握表达式的书写以后,若是仍然还得用对话框就显得繁琐了
并且报表开发人员是手艺工种,从初学者到熟手是垂手可得的工作,能否快和便利,要从一个熟手的角度去权衡,而不是初学者,所以考察的时候万万不要掉到外行容易熟手繁琐的操做陷阱中
上面三个报表都是比力初级的报表,我们更多的是从简单的通俗操做上来看开发的效率若何,但现实的项目中,报表常常远没有那么简单,良多城市涉及较复杂的计算, 造做那些复杂的报表消耗的时间会更多,也更需要重视效率,所以复杂计算报表的开发效率,也是我们考察的重点
我们继续用两个示例来看下更复杂的报表的开发效率若何考察
示例 4 偏重于考察报表东西函数的功用,看一些复杂计算场景中,能否有对应的高级函数来间接处理问题,示例 5 偏重于考察东西处置一些复杂的多步、过程式计算的才能,看处置那些计算能否简单高效
示例 4:找出前进最快的 3 名同窗
基于如下数据学生成就表:
停止年度学生成就汇总,停止班级班名以及和去年成就比照,找出前进最快的三位同窗,构成如下成果:
要点:看各东西怎么去做那个计算,看哪个更简单高效
造做过程
参数设置
报表中增加参数 nd,默认值为 2019,用于领受年份
数据集设置:
ds1:SELECT bj,studentid,yuwen+shuxue+yingyu zf,nd FROM XSCJ where nd=?,问号对应参数表达式:nd,用于对参数对应年度数据
ds2:SELECT bj,studentid,yuwen+shuxue+yingyu zf,nd FROM XSCJ where nd=?,问号对应参数表达式:nd-1,取参数对应上一年数据
报表模板设想:
A3、A4 单位格合并,根据班级分组,设置显示值表达式:chn(int(value()))+“班”
B3、B4 别离取出姓名、分数字段
D3:=count(C3[A3]{C3>$C3})+1,班级内排名
E3:=count(C3[`0]{C3>=$C3})+1,年级排名
F3:=ds2.select(zf,bj==A3 && studentid==B3),从 ds2 数据集中取进来年成年,前提间接写在 select 函数内
G3:=C3-F3,成就变革
B4:=“班内成就提拔最快的三位同窗是:”+string(esproc(“?.m(?.ptop(-3))”,B3{},G3{})),利用润乾内置函数 esproc,将 K3 单位格(名次变革幅度)传入,ptop(-3) 取更大的 3 位的位置,然后用 m() 函数按照位置取对应的姓名
成果如下:
那个例子次要是测试报表东西的一些复杂计算才能,若是报表东西的模子中函数较为丰硕且计算才能强,好比润乾报表内置了良多开源 SPL 计算东西的高级函数,那处置起复杂计算来就会游刃有余
若是函数计算功用不敷,那就得通过多步计算,额外在报表中设置辅助计算格才能够完成,好比有些报表东西,需要像下面如许用 H 列进一步计算需要的数据,然后再隐藏掉
那些额外辅助计算格,不只增加了开发工做量,数据量大的时候,还会影响报表的性能
其实那款报表已经不错,供给有条理坐标之类的工具,用隐藏格还能做出来,有些报表东西连那个都没有,只能本身在外部写代码实现了,工做效率会大受影响
示例 5:找出指按时间内的大客户
从如下销售数据中:
取出指按时段的大客户。所谓大客户,定义为销售额占前一半的客户,也就是把客户销售额从大到小排序后,前面若干个客户的合计销售额构成总销售的一半,那些客户被称为大客户
报表成果:
造做过程
数据集设置
润乾报表内置了高效的开源计算东西 SPL,能够通过内置的脚本更简单高效的计算那些复杂的多步计算,把计算成果当做数据集间接供报表来利用,脚本如下:
A3:对销售额停止乞降操做并处以 2,取出总金额的一半,用于判断大客户。B3 设置初始值为 0,用于做销售额累加操做
A4:对销售额停止累加,取出累加金额大于 A3 中对应的 A2 的序号
A5:按照序号取 A2 中对应的值,并做为成果集返回给报表
报表模板设想
报表成果
从那个例子能够看出,本来需要在报表中做大量计算才气做出的报表,颠末脚本筹办数据后,只需要在报表中间接取数就能够了
若是没有脚本,那就只能在报表中完成如许的计算,写起来费事,需要设置良多辅助格,同时增大了实现难度,对人员要求变高了良多(意味着成本上升),并且性能也远没有脚本的好
本示例只是举了一个很小的需要分步计算的例子,就已经能够看出差别东西的设想效率了,一个简单易懂的脚本搞定,仍是一堆辅助计算格 + 复杂的表达式来完成,开发效率差别是显而易见的
现实的项目中的复杂报表,对原始数据的处置和计算,远远要比本例复杂的多,若是有脚本功用,那能够用脚原来处置那些计算,不只写起来简单,算起来还快,若是没有脚本功用,那就只能用成百上千行的复杂 SQL,存储过程或者高级语言去写了,那样开发效率就更低了
所以我们考察报表东西关于复杂报表的开发效率时,能够看看本身的项目中有没有需要写复杂的 SQL、存储过程或者更复杂的数据来源处置的报表,拿来找各东西测试验证下,看看它们的效率都若何
价格也是个重要因素
价格和考察开发效率也有关系吗?
还实有,考察开发效率的最末目标不就是为了节省时间和人工成本吗?都是为了省成本,那价格上省出来的成本其实更间接。东西的购置价格和开发效率要放在一路综合考虑才气得到总体的成本
好比各人可能城市想到利用不要钱的开源报表,购置价格为 0,但开发效率太低(面临我国的复杂报表),成果总体成本却不低。而商用报表东西固然要花钱,但开发效率能进步良多,有可能总体成本会更低。
当然,价格很容易比照,只要别忘了就行了
总结
怎么考察报表的开发效率,相信各人看过上面的考察要点和示例以后,应该都比力清晰了,其实其实不难,那就是现实去用一用,看看一个纯熟的工程师用起来繁琐不繁琐,测测项目上格局和计算复杂的报表各个东西做起来困难不困难,用过试过就找到谜底了
同时,代价也挺重要
感兴趣的小伙伴,请识别右侧二维码与我们联络
微信号|RUNQIAN_RAQSOFT
欢送来【乾学院】的原文中留言,颁发您的概念!






























还没有评论,来说两句吧...