润乾集算报表层次数据集对性能的影响测试

1、测试目的

在相同的硬件和集算报表IDE上测试使用集算报表使用层次数据集与不使用层次数据集之间的性能差异,从而确定层次数据集对报表性能的影响。

2、环境描述

测试机型:DellInspiron 3420

CPU:Intel Corei5-3210M @2.50GHz *4

RAM:4G

HDD:西数WDC(500G5400转/分)

操作系统:Win7(X64)SP1

JDK:1.6

数据库:hsqldb

集算报表版本:5.0

3、数据描述

表数据

4、用例描述

4.1、分组明细报表

使用销售记录表,按照销售人员分组统计订单金额后,列出每个销售人员的订单明细,报表格式为:

4.1.1、不使用层次数据集实现

sql数据集

ds1: select 员工ID,订单ID,订购日期,订单金额,客户 from 销售记录表

ds2: select * from 员工表

报表模板

设置A2显示值表达式:ds2.select(姓名,编号==value())

4.1.2、使用层次数据集实现

集算器数据集

报表模板

4.2、固定分组报表

通过订单、订单明细和客户表,统计环首都经济圈、珠三角、长三角地区的城市订单情况,这里地区未在数据库中存储,需要预置。

报表格式:

4.2.1、不使用层次数据集实现

内建数据集ds1:

sql数据集ds2

SELECT 客户.城市,订单明细.数量,订单明细.单价,订单明细.折扣 FROM 客户,订单,订单明细 WHERE 客户.客户ID = 订单.客户ID  AND  订单.订单ID=订单明细.订单ID

报表模板

4.2.2、使用层次数据集实现

集算器数据集

报表模板

4.3、主子表

使用订单表和订单明细表,查询每个订单详情以及该订单下的订单明细,报表格式如下:

4.3.1、不使用层次数据集实现

sql数据集

SELECT 订单明细.单价,订单明细.产品ID,订单明细.折扣,订单明细.数量,订单明细.订单ID,订单.订单ID,订单.客户ID,订单.发货日期,订单.到货日期,订单.货主名称,订单.运货商,订单.运货费,订单.货主城市 FROM 订单,订单明细 WHERE 订单.订单ID = 订单明细.订单ID

报表模板

4.3.2、使用层次数据集实现

集算器数据集

 

报表模板

5、测试方法

使用同一个集算报表设计器,根据相同数据源分别使用层次数据集、不使用层次数据集制作相同展现结果的报表,比较二者之间的差异,确定集算报表层次数据集对报表性能的影响。

6、测试结果

*下表结果数据单位为:秒

【说明】运行结果,记录的是报表完整运行时间,从取数开始到报表展现结束的时间。

7、解读分析

从上面的结果可以看到,常规分组明细报表相差不太明显(1秒基本上在误差范围内),其它两种情况使用层次数据集都可以提升报表的计算性能,特别是主子表的性能提升非常明显。

分析其原因,虽然常规分组报表在报表工具中计算使用了更慢速的排序运行,但50万行的实际排序时间不到1秒,在总时间中占比较少;这时层次方案即使使用了更高效的hash分组(单对比分组时间能快出5-10倍),在总时时也不会有更明显的提升了。如果数据量再大,排序时间占比提升时,层次方案将会有较大优势,不过作为报表,在呈现阶段很少会涉及到更大的数据量了。

而固定分组报表和主子报表都需要使用遍历方式来建立关联对应,这时计算时间的占比较高,变成了主要时间消耗环节,特别是主子报表更为明显。这样,层次方案中使用集算器事先完成关联就会获得更高效的运算性能了。

时间: 2024-11-07 20:41:04

润乾集算报表层次数据集对性能的影响测试的相关文章

润乾集算报表提升性能之层次数据集

多层次报表是很常见的报表形式,如分组报表和主子报表.其中的关联运算(组与明细,主表和子表),由于有层次而不能直接在数据库中完成,需要在报表端完成.但报表端一般只用采用排序和遍历的方法实现关联,性能较差.利用润乾集算报表的层次数据集则可以在数据源计算过程中就完成关联计算,并且有层次的结果集直接传送给报表呈现,在关联计算中充分利用集算器的高效算法,从而达到优化性能的目标. 下面通过一个主子报表的实例看一下使用过程与效果. 报表描述 使用订单表和订单明细表,查询每个订单详情以及该订单下的订单明细,报表

润乾集算报表的层次数据集理解

润乾集算报表提供了层次数据源支持,在集算器中完成表间关联后可以将带有主从结构的数据集(如关联后的维表.事实表)直接给报表使用,而不需要在报表中再次关联:同样集算报表接收到事先在集算器中完成带明细的分组数据集也可以直接使用,而不必再次分组. 什么是层次数据源? 层次数据源是指在集算报表中使用集算器数据集类型,接收集算器脚本返回的带有层次的结果集,作为报表的数据来源. 如上图,脚本返回的结果集A6包括销售姓名.按销售汇总的订单金额以及对应分组下的订单明细:订单明细指向了另外一个集合,该销售下包含订单

润乾集算报表的集算器数据集部署(I)

润乾集算报表提供了集算器数据集,允许用户使用集算器脚本完成数据的进一步计算和加工,为报表提供数据源支持,从而简化报表开发,提升报表性能. 集算器脚本的编辑需要借助第三方集算编辑器(非报表工具)完成,而后嵌入到报表工具和报表应用中完成报表开发和部署. 下面来看一下集算器数据集的使用和以及报表部署过程. 1.开发环境使用 集算报表使用集算器数据集时,首先需要设置集算器授权信息和配置数据源连接(如果需要从数据库中取数). 1.1.设置授权信息 启动集算报表设计器,选择工具-选项,切换到"集算器选项&q

润乾集算报表的脚本数据集

润乾集算报表提供了一种新的数据集类型--脚本数据集,同意用户在数据集中完毕数据的进一步计算和加工,为报表提供数据源支持. 以下详细来看一下脚本数据集. 什么是脚本数据集? 集算报表的一种数据集类型.能够在脚本数据集中编辑计算脚本(脚本遵循集算器语法)完毕数据计算和处理,将加工后的结果集为报表提供数据源支持,从而使报表工具获得数据源再计算的能力. 脚本数据集编辑器中即无法像集算器编辑器一样添加删除行列.也无法进行可视化调试,所以脚本数据集适用于计算脚本比較简单的情况. 怎样使用脚本数据集? 脚本数

润乾集算报表实现多数据集关联的示例

多数据源混合的场景在报表开发中非常常见,如:数据来源于多个数据库.数据库和文件混合的场景.传统报表工具在处理这种问题时往往采用两种方式:1将数据统一到一个数据库中,来避免跨库查询或数据库文件混合查询:2使用高级语言为报表自定义数据集,在程序中完成多数据源关联运算.上述做法除了对数据库产生影响.增加实现难度外,往往报表性能也不理想. 使用润乾集算报表对异构数据源的有效支持可以很方便完成多数据源关联报表,这里通过示例说明. 跨库数据源 企业员工每月应发工资跟员工的基本工资.考勤以及绩效有关,考勤信息

润乾集算报表多样性数据源之json

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:JSON.HTTP.TXT文本.Excel.Hadoop.mongodb等. JSON作为一种轻量级数据格式应用非常广泛,报表读取json数据源进行报表开发的需求也很常见,另外有些报表还会接收来自HTTP服务器的数据进行报表展现.这里通过例子分别来看一下集算报表使用json数据源和http数据源的过程. 一般JSON数据源 报表说明 学

润乾集算报表使用json数据源的示例

JSON作为一种轻量级数据格式应用非常广泛,报表读取json数据源进行报表开发的需求也很常见.润乾集算报表可以很好支持json数据源,这里通过实例说明. 示例一 报表说明 学生成绩在应用中以json文件存在,现需要汇总学生成绩,并按总成绩排名,结果以报表展现.报表样式如下: JSON文件中包含班级.编号.姓名.学科.成绩等信息,格式如下: [ { "class": "Class one", "id": 1, "name": &

润乾集算报表使用远程HTTP数据源的示例

报表的数据来源多种多样,有时会接收来自HTTP服务器的数据进行报表展现,一般报表工具只能通过报表自定义数据源使用高级语言(如JAVA)进行处理,实现较为复杂.集算报表简单地通用集算器接收HTTP数据源完成报表展现.这里通过一个实例说明. 学生成绩信息存储在远程的JSON格式文件中,其所在HTTP服务器对外提供统一HTTP访问接口,现需要读取学生成绩信息开发报表,汇总学生成绩并按总成绩排名.报表样式如下: JSON文件中包含班级.编号.姓名.学科.成绩等信息,格式如下: [ { "class&qu

润乾集算报表应用开发之参数输入

参数对于报表的重要性不言自明,润乾集算报表支持两种参数输入方案,可以使用集算报表设计参数模板联合报表一同发布,还可以自定义参数输入后与报表结合.二者并没有显著的差异,前者在开发使用上更加方便快捷,而后者则在灵活性上更胜一筹,用户在使用集算报表参数输入时可以根据实际需要进行选择. 下面就上述两种参数输入方式的使用分别来看一下. 使用参数输入模板 集算报表提供了"参数模板"的报表类型,使用参数模板可以制作参数输入表单,而且其内置了多种编辑风格,如下拉树.下拉日历.列表框.下拉数据集等.使用