润乾报表与帆软报表产品对比Word下载.docx
《润乾报表与帆软报表产品对比Word下载.docx》由会员分享,可在线阅读,更多相关《润乾报表与帆软报表产品对比Word下载.docx(26页珍藏版)》请在冰点文库上搜索。
2.4 行类型 13
2.5 折叠报表 13
2. 6 统计图 16
2.7 超链接 16
2.8 参数与宏 17
第三章 集成性 18
3. 1 WEB应用集成 18
3. 2 API接口 19
3.3 自定义数据接口 19
3.4 移动端展现 19
第四章 性能与容量 21
4. 1 多源关联 21
4. 2 容量 21
4.3 响应 22
4.4 并发 22
第五章 美观性 23
4.1 设计器UI 23
4.2 统计图 24
第六章总结 25
前言
多年以来,我们经常被客户询问关于润乾报表与帆软报表的不同之处,对此我们的态度一直是避而不谈,因为从心底里不愿意去做这样的对比,我们坚信“你若盛开,清风自来”,也一直在秉行只说自己好,不去评判竞争者好坏的商业原则。
如果客户在面对选型时有所纠结,我们都是建议客户自己去对比选择并积极配合。
但是现在这样的客户反馈越来越多,而且确实有许多客户对报表工具不熟悉,不知道在选型时该对比哪些内容。
另外,市场上长期以来充斥着一些倾向性非常明显、内容却很片面且与实际不符的对比材料,其编造者也不敢署名,这些错误的材料误导了客户对报表市场的感知能力。
因此,不管是客户需求,还是市场需要,还是自我澄清,我们现在都有必要做个回应。
下面对两种产品进行了详细测评,并整理汇总出文档供业界参考。
我们力求做到客观公正,但由于对友商的产品不是非常熟悉(我们的精力更多的是研究客户需求,而不是竞争者),因此难免有错,敬请广大业内人士指正,特别是敬请友商指正。
润乾报表和帆软报表都是国内知名的报表解决方案供应商,两者的共同特点都是类Excel的纯Java的Web报表工具,但在技术细节和发展方向上存在差异。
本文主要考察这两款报表工具在制作固定报表时的差异。
固定报表是指由报表开发人员预先定义好报表样式、取数规则、查询条件、业务逻辑等,报表的使用人员仅在Web端进行报表的查看,不涉及报表结构的修改。
固定报表是业务系统中最常用的、开发工作量最大的任务,其制作方便性及能力对项目开发周期有很大的影响。
另外,由于固定报表主要是在应用程序中使用,其集成性也是非常重要。
本文将对这些方面进行客观的测评。
第一章报表设计
1.1对EXCEL的支持
既然润乾和帆软都是类Excel的设计模型,那么我们先来看看二者对Excel的支持情况。
对Excel的支持从以下几方面进行:
1.1.1设计器打开Excel文件
在设计器中可以直接打开Excel画好的表样,无疑可以减少重复绘制表格的工作量,润乾和帆软都可以在设计器中直接打开Excel文件,但是润乾报表打开的Excel看起来跟原始Excel字号略有差异,这是因为微软跟JAVA的标准不一致造成的,但是再导出成Excel字号还是一样的;
帆软不支持表格中文字右对齐,需要在设计器中手动调整对齐方式才能跟Excel保持一致。
其余属性,例如字体,前景色,背景色解析的无差别。
1.1.2对Excel的公式支持
对于常用的公式,例如求和、求平均值、最大值和最小值、获取当前日期。
润乾报表都不支持Excel的用法,需要简单修改函数参数,符合润乾的语法才可以;
帆软无需修改函数全部支持。
1.1.3复制粘贴Excel的内容
从Excel中复制任意一片区域,粘贴后润乾报表和帆软报表都可以原样展现在设计器表格中,无差别。
1.2制作报表
报表工具的主要作用就是制作报表,刚才也提到润乾和帆软都采用类Excel的设计模式,下面主要测评一下润乾和帆软的制表过程和难易程度。
润乾报表
制作报表的第一步就是数据连接,润乾报表支持JDBC,ODBC以及JNDI三种数据连接方式。
常用的关系型数据库都支持用JDBC方式连接,用法也简单,只需要把相关jar包放在指定目录下,选择相应的驱动,配置URL和用户名、密码即可;
而ODBC方式则需要在系统的ODBC数据源管理中先进行配置,再通过设计器的ODBC数据源界面选择匹配即可;
而JNDI数据源则需要在配置文件中设置JNDI前缀与相应要连接的数据源JNDI名字相同即可。
有三种制表方式:
第一种报表的制作方式最简便,可以由向导引导完成,包括从数据集制作到列表、分组、交叉三类报表的取数、展现,全程根据向导引导完成;
其次,如果对润乾的语法等比较熟悉,可以抛开向导,用拖拽字段到指定单元格的方式制作报表,这个时候可以制作出的表样就不仅仅局限于三类报表而制作出更多更复杂的报表;
第三种方式比较适用于开发人员,抛开一切辅助手段,手动输入表达式及各中参数,这种方式可以将每个表达式的设计功能发挥到极致。
制作报表过程中,鼠标放在每个单元格上,设计器最下面一栏会显示该单元格的所有属性,并且在调试报表阶段,可以从设计器的控制台查看报表运行时的日志,对调试复杂报表的表达式写法有很大的帮助,如下图:
报表制作完成后,润乾报表提供了“添加到样式”的功能,类似于Excel的格式刷的功能,可以有效减少统一单元格之间样式一致性的重复性工作,如下图:
润乾报表支持在设计器中预览报表并输出为Excel、Word等常用格式文档,
不是一定要在Web端预览后才能输出报表,如下图:
帆软报表
对于数据连接,帆软报表支持JDBC方式和JNDI两种连接方式。
用法也比较简单,配置驱动,URL以及用户名、密码即可。
但是帆软报表支持在数据源连接界面直接设置数据库连接池的相关属性,无需再去配置文件中设置,这点比较方便。
有两种做表方式:
第一种方式是通过字段拖拽到指定单元格的方式制作报表,但是支持字段的批量拖拽,可以选择批量选中的字段的布局方式,函数所涉及的所有功能都可以通过点选的方式启用,但拖拽到单元格中的表达式就不支持手动更改相关参数选项;
第二种方式是手动输入表达式,完成函数嵌套等一些复杂用法。
帆软报表从报表模板中很难看出报表的制作过程,不能一眼看明白每个单元格设置了哪些属性,在报表调试过程中,没有明细日志,对于报表开发人员来说函数和调试过程完全是封装起来的,不知道具体执行过程,调试时就麻烦许多。
帆软报表在报表制作完成后的报表美化过程也提供了“样式”属性并且自带了样式库,而且样式多种多样,不过真正想用这个库里的样式,一定要仔细认真,不然容易选错,因为太多了,而且挨得比较近。
如图:
帆软报表不提供在设计器预览报表的功能,只能以分页模式、填报模式或分析模式在Web端预览及输出报表。
1.3制作统计图
润乾报表中可以选择自带的统计图或第三方图形两种方式。
双击单元格中统计图,弹出统计图相关属性定义面板,点击确定后即可预览到相应效果。
而添加第三方图形,则需要写相关JavaScript代码完成第三方统计图调用,用法没有自带统计图简单,但展现效果更炫。
帆软报表支持自带的图表和集成第三方图表两种方式,单击图表,右侧即可设置图表相关属性,包括数据来源、图表交互、热点链接等功能,有点扁平化设计的影子。
至于展现效果,要比润乾自带的统计图炫酷。
如果用第三方图表,要写自定义类,用法复杂。
1.4远程设计
润乾报表不直接支持远程设计报表,因为产品的定位是中间件,不能假定用户应用后台资源的权限和管理规则,甚至不能假定一定有后台,不适合提供这种能力。
润乾开放了设计器的API接口,有需要的话可以根据实际需求自行开发,不过开发起来确实不是很简单。
帆软报表采用了三层架构技术,而且本身有完整的报表管理功能,这样就可以让用户通过远程设计模式,在本地设计远程发布模板,并直接对服务器端报表文件编辑更改。
多个报表制作人员可通过远程设计器连接到同一个报表运行环境,达到多人协同办公的目的。
不过,管理后台只能使用产品中固化的资源权限管理规则,项目组开发时问题不大,但实际上线系统中用于维护报表的可行性不高。
第二章功能性
2.1中国式复杂报表
中国式复杂报表的特点是:
格式复杂、信息量大、计算麻烦。
润乾首先提出了非线性报表数学模型用于解决中国式复杂报表,帆软随后跟进也采用了这一模型。
下面从几方面看一下两款产品对非线性报表模型的支持情况。
2.2.1多源分片
两款报表工具都能很好地支持多数据源。
润乾报表可以通过可控性极强的函数完成横向分片,纵向分片,多片变动、
动静结合以及跟随主记录自行扩展重复的明细表。
帆软报表也可以实现多源关联分片,但当横向数据较多,web端不支持以浏览的模式在一页展示,只能以填报模式或分析模式在一页浏览。
2.2.2动态格间运算
润乾报表对于运算后报表数据项有很好的命名机制,可以精确描述数据引用关系,同时,单元格层次做表与相关格集,可以对扩展后的每个单元格或格集进行精确命名,从而对占比、累计、同期比、环比、按条件汇总、排名、组内序号、组间序号等复杂问题可以轻松实现。
帆软报表基于格子界面中数据扩展的特性,即设计界面与返回数据一对多的关系,提供了一整套运算体系,用于扩展后数据的定位与相互引用计算,可以实现占比、同期比、环比、排名、组内序号、组间序号等。
润乾报表和帆软报表在这一点,不管是数学模型,调用方法还是实现的功能几乎一样,没有太大差别。
2.2.3行列对称
润乾报表具有天然行列对称特性,行方向拥有的数据扩展能力在列方向也都有,所有报表均在统一的处理模型下完成。
帆软报表列方向能力弱于行方向,稍微复杂点的交叉表无法实现,只能使用子表。
例如:
有两片分组层数不同的变列区域和几个固定的计算列混合的报表。
0鑫新建合我计分析求
2.2.4不规则分组
润乾报表支持的不规则分组类型有:
按段分组:
类似于价格区间、年龄区间这种可以穷举出来分组规律的;
归并分组:
类似于某些产品可能不属于既定的任何一种归类而被归入其他类的;
重叠分组:
分组后,又需要对该组中重点客户单独分组汇总的。
这三种常用的不规则分组,只需要调用相应函数就可以实现,很方便。
帆软报表支持的不规则分组类型有:
类似于价格区间、年龄区间这种可以列举出来分组规律的;
相邻连续分组:
数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示;
归并分组:
类似于某些产品可能不属于既定的任何一种归类而被归入其他类的。
帆软不支持重叠分组,但是提出了另一个不规则分组-相邻连续分组。
2.2数据源
润乾报表直接支持多种数据来源,包括传统的关系型数据库,文本数据集、内建数据集、和Java自定义数据集等。
接上润乾集算器后还可以支持更多的数据源,如json/XML、HDFS/Hive/HBase、MongoDB,HTTP、Redis、阿里云等。
帆软报表支持的数据源包括关系型数据库、文本数据源、多维数据库、NoSQL数据库、json数据源、SAP数据源以及程序数据源。
2.4行类型
润乾报表支持单表式、引入式和嵌入式三种方式的子报表,并且支持不限嵌套层数的子报表。
由于嵌入式子表是将子表缩放到主表某单元格的大小,当子表很大时,嵌入到主表可能会出现显示不全或被缩放的很小的情况,这种情况适用于引入式子表,不用主表单元格大小限制子表的大小。
帆软报表支持单表式和嵌入式两种方式的子报表。
值得一提的是帆软的聚合报表,类似主子表,但除了可以添加子表,还可以添加统计图,多个子表之间的扩展不相互影响,应该可以解决嵌入式子表的问题。
润乾报表的行类型分的很细,有分页页眉、头标题、报表头、分组表头、数据区、报表尾、尾标题、分页页脚,设置好行类型,就可以实现web页面固定表头,分页后表头重复等功能,很方便。
帆软报表的行类型只有页眉和页脚可以设置,如果要在页面固定表头或分页表头重复需要选中相应行单独设置。
2.5折叠报表
润乾报表支持树形折叠报表和OLAP折叠报表两种,且用法简单,只添加一
个标签无需报表做过多设置。
帆软报表支持折叠树和行列双方向的折叠树,制作折叠树报表,首先要单独新建树数据集,需要在数据集中包含父节点和子节点同时还要添加条件属性,将空数据隐藏,否则折叠树会不规则。
至于双方向折叠树用法更麻烦,需要自己写JavaScript方法实现。
2. 6统计图
润乾报表支持自带统计图和第三方统计图两种方式,提供了多一种的选择空间。
自带的统计图类型主要是常规图表,例如:
饼图、柱图、线图、雷达图、甘特图、工字图、时间走势图等,其他类型统计图可以用第三方统计图插件实现,例如气泡图、股票图、词云等。
同时,润乾自带的统计图支持统计图标题、系列标题等的动态变化,即标题中可以接收参数。
从文档和宣传材料上看,帆软报表看起来仅支持自主研发的统计图。
自带的统计图除了支持常规饼图、柱图、线图、雷达图、甘特图、工字图、时间走势图以外,还支持散点图、圆环图、气泡图、地图、GIS地图、树图等统计图类型。
并且在交互性方面比较突出,例如自动刷新、在线切换统计图类型、数据提示、自定义标签、高亮交互、坐标轴缩放以及多个统计图之间的联动等功能,设置简便,效果炫酷。
2.7超链接
润乾报表支持通过超链接的方式给不同报表和图表之间传递参数,从而实现数据从宏观到微观的分析过程。
帆软报表支持多级超链接,一个单元格定义多个超级链接,即在报表展现时,可以同时提供多个选择供数据钻取。
2. 8参数与宏
润乾报表支持普通参数和动态参数两种形式。
即如果只是想通过输入不同值而查看不同结果或通过不同用户登录后查看不同结果时,使用普通参数在sql里设置参数,在数据集或单元格里接收参数即可。
当然,参数的个数可以是多个,参数的输入形式也不仅仅局限于文本框。
而如果需求是想通过一个表达式去判断参数值,就要使用动态参数。
用法和界线鲜明易懂。
润乾报表还支持一种特殊的参数叫宏,它是没有数据类型限制的字符串标识,宏也分普通宏和动态宏两种。
同样的,普通宏的用法类似普通参数,可以被用于sql语句中或者单元格中进行宏名的原样替换宏值;
而动态宏则有一个很强大而实用的功能,因为它没有数据类型限制,它可以被用在sql语句里,动态判断sql的执行范围等。
帆软报表支持将参数定义在sql语句的任意位置以达到筛选的目的,即在定义参数时,不用管参数类型,参数是静态还是动态,全部都可以在sql语句里统一处理。
不用预先设置参数类型虽然方便,但用的时候却不太方便。
例如要想实现最简单的参数为空时,查询全部数据的功能,就需要在sql语句里写一堆if判断去做。
写出来有点繁琐,SELECT*FROM订单where1=1${if(len(area)==0,
"
and货主地区='
+area+"
'
)}${if(len(province)==0, ,z/and货主省份
='
+province+"
"
)},而用润乾报表实现同样功能的sql语句写法为:
SELECT*FROM订单where(@area==?
Or?
isnull)and(@province==?
isnull)
这里不得不说的是,帆软报表在这方面是有安全隐患的!
这不是站在竞争者角度上评说,而是一个专业技术人员的态度。
拼SQL串解决查询灵活性的方案,轻则可能出错(比如参数值中有引号时就会拼出不能执行的SQL,日期型常数在不同数据库下写法不同也容易导致错误),重则会被利用为SQL植入,泄露数据库中的关键信息,这一向是数据库开发人员很忌讳的地方。
事实上,像润乾一样实现成SQL参数的方式并不难,我们不明白为什么帆软公司没有这么做,却在文档中到处推荐这种拼SQL串的方法。
拼SQL串的方案并非不能用,润乾报表中也提供有宏,但原则上是尽量少用,而且必须有经验的程序员很小心地使用。
大量推荐使用,特别是由缺乏安全经验的报表开发人员使用,将大大增加SQL植入的风险,后果将很严重。
从这一点可以看出帆软公司的程序员对企业级应用的意识比较淡薄。
我们在这里提醒帆软公司,如果已经提供有SQL参数方案(我们不确定是否真地有)则立即向客户说明,并在文档中的显著位置加以提示,如果没有则立即补上并向客户发出产品召回通知,同时都要求客户修改开发方法,这才是对客户负责的态度。
2. 9打印与导出
润乾报表支持三种打印方式,Applet打印、Flash打印和PDF打印。
具体支持的打印的功能点包括:
分页打印,缩放打印,套打,静默打印,直接打印,批量打印,保存客户端打印设置以及打印预览时是否可以修改数据等功能。
润乾报表支持除标准HTML夕卜,以文件的方式将报表导出,支持导出的格式有:
Excel,PDF,Word,RAT文件(润乾报表自有的文件格式,主要用以保存报表运算后的结果),同时开放相关API接口,允许用户继承接口自定义导出其他格式的文件。
这里需要强调的一点,润乾报表支持WORD报告类报表,即可以把报表、报表中某一单元格、统计图等报表中的元素生成到word文件中,形成word报告类报表,此功能避免了传统方法中用类Excel设计器绘制word报告时采用大量隐藏格的麻烦,效率更高,也更方便。
帆软报表支持的打印方式也是三种,Applet打印、Flash打印和PDF打印。
支持的打印的功能点有:
分页打印,缩放打印,套打,静默打印,偏移打印,批量打印,自动选择纸张和方向打印等。
帆软报表支持的报表导出格式包括:
PDF,Word,PDF,TXT,SVG以及图片格式。
同时,帆软报表支持通过API接口实现将报表导出为内置数据CPT、CSV等其他格式文件。
第三章集成性
3. 1WEB应用集成
润乾报表的定位是中间件,所以集成性非常好,对于Web应用集成,只需要引用十几个相关jar包和必要的配置文件即可,用户页面可以使用tag标签来嵌入报表,非常简单。
后台服务只有报表计算的相关程序,没有其它外围内容,tag(本质上是API)方式也能确保性能和功能不损失。
帆软报表本质上是个报表应用系统,需要用URL方式把报表集成到用户页面中,也不是很麻烦。
但过程需要引用的jar包和配置文件很多,还会自动启动用户资源管理等相应的服务程序,消耗服务器资源。
URL方式会降低性能,且有些类型的数据无法传递。
3. 2API接口
润乾报表定义了丰富的API接口,供程序员调用,从而对报表服务器进行深度完全控制。
在API结构上可以分成三个层面,数据层、运算层和展现层,每个层面都有开放的接口允许程序员调用和重载。
帆软报表只开放了少量接口供程序员调用,包括数据源接口、前端展现相关接口、报表再处理接口以及自定义函数接口,无法实现一些深入的客户定制化的功能。
3.3自定义数据接口
润乾报表支持通过JAVA自定义数据源,并在报表中通过直接调用编译好的类文件的形式访问数据。
帆软报表也支持JAVA自定义数据集,调用方法也是直接调用类文件的形式。
值得一提的是,润乾新出了集算器产品,可以用于实现更复杂高效的数据源运算。
润乾报表可以和集算器深度集成,获得最高性能和完整功能。
当然,帆软报表也可以通过自定义数据接入集算器,不过只能使用集算器的公开接口,某些深入功能无法支持,性能也会有损失。
3.4移动端展现
润乾报表支持小流量的HTML5,统计图支持SVG等移动端输出格式,保证报表和统计图可以在移动端展现并且集成到APP中更简便,集成度更高。
但由于面向集成,所以没有提供现成的APP,这需要用户方自行开发,难度不是很大。
帆软报表全线产品提供了移动端APP,展示方案采用HTML5方式,具有良好的交互体验,但是现成的APP和用户的APP没有办法集成在一起,如果要用自己的APP,那还是WEB集成的方案,如前所述,这时就不如润乾报表轻爽简单了。
第四章性能与容量
4.1多源关联
润乾报表对于多数据源对齐采用的是Hash算法,复杂度由平方级降为线性级,通俗的讲,就是在做多数据源连接时效率更高。
做了个简单的例子,三个数据表之间的关联,用润乾报表的常规sql数据集,从取数、计算到展现,只用了2秒。
帆软报表对于多数据集的连接,用的应该是遍历的方式,从展现效率上得出的以上结论,同样是三个数据表之间做关联,用帆软报表的数据库查询方式作为数据集,从取数、计算到展现,用了8秒。
4. 2容量
在1G内存下,润乾报表普通报表机制下可以支持到800万左右单元格,清单式列表一页30行,页面可以支持到266667页,耗时1分54秒;
交叉报表按一行2000列,一页56行,web端分44756页,耗时:
47秒;
帆软报表在同样的环境下,清单式列表最多支持到600万左右单元格,按一页56行,页面支持到89286页,耗时1分零34秒;
交叉报表最多支持到200万左右单元格。
一行1000列,web端分4032页,耗时1分25秒。
200万
600万
800万
清单式列表
1分01秒
1分54秒
交叉报表
7秒
47秒
1分34秒
内存溢出
1分25秒
另外,对于海量数据的清单报表需要逐步分页呈现,润乾报表提供了一个大报表机制,通过不断的分批取数存到临时文件里,用外存换内存的思路提升大数据量报表的预览速度,且保证不会溢出。
不过这个功能需要集算器的支持。
帆软报表对于海量数据的性能优化没有很好的解决方案,而是通过FineBI的Finelndex引擎,给数据建模,或者FineDirect引擎,直接对数据源进行自助取数分析。
4. 3响应
实测结果,统一在Intel(R)Core(TM)i5-320MCPU@2.50GHz/4GRAM的PC机上,100万条源数据,显示结果约为10万单元格,润乾报表响应时间为8秒;
帆软报表响应时间为16秒(两个测试结果都是除去JDBC读数的结果)。
4.4并发
实测结果,统一在Intel(R)Core(TM)i5-320MCPU@2.50GHz/4GRAM的PC机上,每用户生成200万单元格报表,100用户并发访问,润乾报表平均响应时间为10.126秒,全部成功;
帆软报表平均响应时间为1分45秒,17次失败。
第五章美观性
4.1设计器UI
润乾报表采用类excel的设计模式,默认支持10行10列的报表设计区域。
设计器采用“左-中-右”的界面布局,左边是报表资源树,中间是报表设计区域,右边是外部属性面板和数据集操作面板。
整个界面风格相对比较传统。
帆软报表米用类excel的设计模式,报表设计区域无限行、列,设计器也米用“左-中-右”的界