首页 > 代码库 > 润乾集算报表的脚本数据集
润乾集算报表的脚本数据集
润乾集算报表提供了一种新的数据集类型——脚本数据集,允许用户在数据集中完成数据的进一步计算和加工,为报表提供数据源支持。下面具体来看一下脚本数据集。
什么是脚本数据集?
集算报表的一种数据集类型,可以在脚本数据集中编辑计算脚本(脚本遵循集算器语法)完成数据计算和处理,将加工后的结果集为报表提供数据源支持,从而使报表工具获得数据源再计算的能力。
脚本数据集编辑器中即无法像集算器编辑器一样增加删除行列,也无法进行可视化调试,所以脚本数据集适用于计算脚本比较简单的情况。
如何使用脚本数据集?
脚本数据集与SQL数据集类似,只是脚本数据集中输入的不是SQL语句,而是分步的计算脚本。下面通过两个例子来看一下使用过程。
实例一
报表说明
根据学生总成绩排名后,按照蛇形分布进行分班(分两个班),1班是1,4,5,8,…名,2班是2,3,6,7,…名。现根据班级参数查询本班学生名单。以下为实现步骤。
报表数据源
新建报表并设置报表参数
在集算报表设计器中新建报表,并设置班级参数:
新建脚本数据集
在数据集类型中选择“脚本数据集”,在脚本数据集编辑窗口分步输入计算脚本,完成数据排列和过滤等计算。
A1:使用报表当前数据源demo执行sql查询所有学生名单及成绩等信息;集算脚本数据集允许连接不同数据源(非当前报表数据源)进行数据查询,可以先使用connect(“db”)建立数据源连接后,再根据该连接进行数据查询;
A2:按照学生成绩降序排列;
A3:为排序后的记录增加排名字段;
A4:使用A.step()函数取子集,这里根据报表参数class来动态获取每个班级的成员;集算脚本数据集中可以直接使用报表定义的参数,更加简明,如本例中的class(这点与SQL数据集等不同);
A5:为报表返回结果集。
设置报表表达式
最后在报表模板中编辑报表表达式完成报表制作。
预览报表,班级参数分别输入1和2,得到1班和2班学生名单,如下:
本例中脚本数据集完成的计算无论使用报表表达式还是SQL都比较难以实现,SQL要通过子查询生成编号后,使用模(mod(no,4)=1 or mod(no,4)=0)才能完成;而在集算脚本数据集中排序后使用A.step()函数就可以很方便取出子集(实际上脚本中增加的排名字段无实际用途,只是为了方便查看结果),非常简单。
脚本数据集除了可以操作数据库,还可以直接从文件中取数计算,下面来看实例二。
实例二
报表说明
学生测试成绩以文本文件(score.txt)存储,现需要根据班级参数,在所有学生成绩单中查询本班成绩并按学生分组汇总总成绩。
文件内容如下:
CLASS STUDENTID SUBJECT SCORE ID NAME GENDER AGE
Class one 1 English 84 1 Emily F 17
Class one 1 Math 77 1 Emily F 17
Class one 1 PE 69 1 Emily F 17
Class one 2 English 81 2 Elizabeth F 16
Class one 2 Math 80 2 Elizabeth F 16
Class one 2 PE 97 2 Elizabeth F 16
Class one 3 English 75 3 Sean M 17
Class one 3 Math 86 3 Sean M 17
Class one 3 PE 67 3 Sean M 17
Class one 4 English 96 4 Lauren F 15
新建报表设置参数
设置脚本数据集
A1:根据文件路径创建文件游标;
A2:使用cs.select()进行数据过滤,返回记录游标;
A3:针对游标根据学生进行分组汇总,求总成绩;
A4:通过result为报表返回结果集。
设置报表表达式
通过如上步骤使用脚本数据集完成文件的读取并完成过滤汇总等操作,非常简单。
脚本数据集的作用
通过上面两个例子,可以看到脚本数据集的主要作用:
1、完成非常规计算
脚本数据集适合完成一些非常规运算(如实例一),这些运算既不适合在报表端做,又不适合在数据库中完成。如果通过外置的数据集(存储过程或Java程序)实现又过于复杂,增加报表的开发门槛,这时使用集算报表的脚本数据集就是个不错的选择。
2、支持多样性数据源
像实例二中读取文本文件一样,脚本数据集使集算报表先天支持多样性数据源,不再依赖第三方程序。除了TXT,脚本数据集还可以支持xls、hadoop、nosql等数据源。
此外,脚本数据集由于采用专门的计算环节,避免在报表中做计算,减少隐藏格,从而还能提高报表的整体性能。
润乾集算报表的脚本数据集