[法式设想]web报表东西的造表效率阐发

11个月前 (11-26 06:51)阅读3回复0
yk
yk
  • 管理员
  • 注册排名3
  • 经验值432265
  • 级别管理员
  • 主题86453
  • 回复0
楼主

所谓报表东西,最核心最水平的功用,就是它的造表才能,便是否可以不写代码而造造出本身需要的各类报表东西。但用户在视察报表东西时往往很重视打印输出、绘造计划、治理调度等外围因素,而漠视了报表东西最水平的造表才能。当然不成承认那些外围的功用对一个报表东西来说也是很重要的权衡原则,但是报表东西的次要用处是造造报表,并且事实上,市场上的支流产物在处置复杂报表时确实存在明显缺陷,其实不能很好地造造出我们需要的报表,对折以上报表仍需编写代码预备数据,招致东西失往意义。因而,视察造表效率关于抉择报表东西是至关重要的。

[法式设想]web报表东西的造表效率阐发

   扔掉便条

   报表绘造的 *** 一般有 网格局 和 控件挈拽式 两种,前者摘用和EXCEL类似的计划,用网格线围出报表;然后者则是用矩形框等元素拼出报表。国内报表对款式要求十分复杂并且严厉,绘造计划是报表东西相当重要的目的,它决定了报表款式的复杂度和绘造效率,特殊是关于格线比力多的表。

   传统的报表绘造,大大都是呈条带状,用的挈拽式,拿部件挈来拽往。表格线需要靠矩形边框重合摆放拼接出来,常见的复杂多层表头画起来十分繁琐,数据区某些纵向合并格以至无法绘造出来(或者需要特定法式把握才气实现),拼出的格线还与辨认率相关,屏幕上对齐的表在打印时或在WEB上展现时又可能不整洁。

   网格局在那方面有明显的优势,可以画出款式很复杂的报表,绘造效率也比控件挈拽式超出跨越许多。因为MS Excel软件的普及,在大大都人心中画表软件就是Excel,关于Excel软件的操做也都很熟悉。如许也能节约许多进修成本。

   所以,类EXCEL的 *** 明显优于挈拽式,或者说,画报表就应该是用象Excel那样的 *** 。可能稍有点常识的人,城市拿Excel画表吧。所以,类Excel是一定的标的目的。

   因为Excel很早就已普及了。所以提及报表东西,天然起首城市想到用类Excel体例,而为什么控件挈拽式的报表东西会那么多呢?

   那是因为Excel固然具有强大的绘表才能,但数据处置才能十分弱,除非用“A2+B3=D4”如许的公式将单位格联络起来,不然单位格之间是彼此独立的,没有任何关系的。假设要从数据库或数据文件中取数,需要法式员一个单位格一个单位格往定义,工做量相当繁忙。需要靠法式员编程来实现动态行列报表的造造。

   因为报表格局只是报表东西要处理的一部门问题。我们用报表东西的目的,是要能从数据库中读出数据,从而主动产生报表,数据才是报表要处理的核心问题。报表格局用Excel能够处理得很好,但是Excel没有优良的从数据库中停止数据汇总计划,除非编法式往格子里填数据,根本上没法从数据库中读出数据主动产生报表。因而那种报表几乎都只能做静态报表。

   而挈拽式的格局固然处理得一般,但从数据库中取数停止数据统计才能方面要比Excel强得良多,两害相权取其轻,堆框虽费力,慢慢堆就行了,但统计汇总不可的话那就没 *** 了。

   报表东西软件和其它软件一样都是国外先做出来的,而国外的报表的款式十分规整,没有格线,表头十分简单,没有斜线表头、没有分层分组。一张报表给予的信息有限,假设要看所有信息,就只能几张表比照着看了。因而国外的报表东西摘用控件挈拽式能弱化报表款式绘造才能弱的缺点。而国内的报表东西根本上都是进修国外的报表东西模子来想象的。而中国式报表的款式相当复杂,所以良多报表东西都被迫再辅以大量的法式代码来处置中国式报表,那也使得用户在买了报表东西后,做报表的工做量仍是很大。

  多源分片。

   多源是指一个报表的数据来源来自多个物理数据表,以至是多个物理数据库。那里的“多个”指的两个以上的物理数据库。

  传统的报表东西只撑持单源报表,即便是数据来自于多个物理数据表或者物理数据库,也需要在报表想象前将多源转化成单源处置。两三个源尚可写SQL语句完成,但多到五六个源以上时,一方面临应的SQL语句过于复杂难以庇护,另一方面其运行效率降低,那时经常要编写存储过程或其它代码来预备数据了。那还只是单数据库的情状,假设多源来自多库,则更为复杂,无法间接写出复杂SQL或存储过程,需要架构专门的数据库桥后才能够完成。

   某些传统报表东西也声称可撑持多源,现实上指的是大都据库撑持,只是把数据库桥功用集成进进报表东西中,但实正到报表想象时仍然是单源的。和我们所说的多源有很大区别。

  多源往往带来分片,恰是因为分片,使得报表想象必需间接基于多源停止,而不克不及先将多源转成单源停止。有相当一部门分片报表无论若何也不成能换成单源处置,部门能转成单源的报表处置也十分繁琐。

  分片是指报表的纵向或横向或双向同时被分红了多个区域,每个区域反复规则区别,而又可能彼此运算。

  传统东西可以处置的上下格局一致和列标的目的固定的分片报表(即可由多源转成单源的报表),但会迫利用户编写复杂的SQL(UNION+JOIN)和代码预备数据,招致工做量大且庇护困难;并且关于横向分片数较多报表,因为必需摘用JOIN体例预备数据,招致运算性能极低,复杂度为O(Nk),k为分片数。

  不规则划分

   几乎所有的报表东西都撑持独立的分组报表格局,即传统的通过一个绑定命据的过程来完成分组报表的想象,那种分组是完全规则划分的,即划分原则一致且有规则(一般都按某个字段或表达式),所有字段都必需显现且只显现一次,分组值次序与原数据笔录次序一致。

  但是与完全划分相对应的,在报表汇总中却经常需要不规则划分,即划分原则看不出法例(经常只能穷举),所有事实纷歧定全数显现在分组成果中、个别事实还可能反复显现,次序也与原数据笔录无关。固定分组是不规则划分的常见表达。

   例如下面那张报表。年龄段的分组就是个不规则划分,划分法例不明白,只能穷举出来;分组不完全,50岁以上的则被整合到一个组内。

   那个报表用传统东西实现很困难,固然报表格局其实不复杂,但因为显现了不规则划分,无法间接用报表东西的分组功用完成,只能编程把数据预备成一个单层的二维表数据源,即加大了工做量,又很难表现数据之间的条理关系。

  动态格间运算

   所有的报表东西城市给予一些计算列的功用,在原始数据根底上再计算出一些此外列值或统计值,那是报表展示中是不成贫乏的功用。

   传统东西一般只给予同业内的格间运算和针对某组(或全体)的聚集运算,关于常见的跨行组运算则相当困难。个外传统东西给予了简单的跨行才能,如能够引用上一行数据,而跨组则力所不及;关于聚集运算只给予个别固定的函数,如取第一名、算累计值等,无法组合出的通用聚集运算则无计可施,如取第二名、算累计的乘积等。某些带前提的运算更是无法可想,如计算语文功效在90分以上的同窗的数学功效总和。

  除了有法例的跨行组运算外,报表中还可能会有一些随意的独立格运算,其值可能是报表中的肆意几个其它格运算出来,以至还可能会引用到报表外的数据(好比和数据库中的数据再次运算等)。因为传统东西没有很好的运算后报表数据项定名机造(传统东西只能用列名定名想象的数据单位),很难切确描述数据引用关系,只能写出法例性很强的表达式,但随意的独立格运算会就使传统东西无法处置,而报表外的数据引用更是只能借助脚本或外围利用法式,招致代码极为紊乱。

   下面那张报表是个典型的跨行组运算报表,此中有比上期(跨行)和比往年同期(跨组)运算,那种报表在传统东西中经常又必需编程预备数据。那个报表的款式其实不复杂,但那些格间运算会让传统东西十分为难。只能再次依靠法式代码,把数据事先计算好间接往报内外填。

   别的,所有以上的讨论中还贯串了一点,即行列对称。纵标的目的上拥有的主动复造扩展的才能需要完全实如今横标的目的上。报表能够横向分组、横向分片,关于横向改变的报表能够定义跨列组运算等。

   我们晓得,报表的上述复杂性经常是混合在一路的,统一张报表中很可能包罗了所有的问题,那要求我们给出完全的处理计划,而不克不及零丁别离处置。当那几种困难交错到一路时,整个问题的复杂度要远比处理几个单个问题的总和要大得多。

   由此可见,只要摘用撑持上述特征的报表东西(如: e表 ),才气实正进取造表的效率。

0
回帖

[法式设想]web报表东西的造表效率阐发 期待您的回复!

取消