多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表除了支持不同类型的数据源(RDBTXT文本、ExcelJSONHTTPHadoopmongodb)外,还支持在一个数据集中为报表返回多个结果集使用,这样可以有效避免重复运算,提升报表开发效率和运算性能。下面通过一个实例说明多结果集的使用过程。

报表说明

根据学生成绩表查询总成绩前三名和后三名的学生姓名以及总成绩。报表样式如下:

wKioL1RN53LCzdh6AACOHsA-GR8903.jpg

由于要分别显示前三名和后三名学生姓名和成绩,报表自然地分成了两部分。这两部分数据如果使用一个数据集会需要隐藏格辅助,使用两个数据集则比较简单,一个数据集基于原始数据进行分组汇总、按总成绩降序排序后取前三名,第二个数据集按升序取前三名。但这个过程又会发生重复计算(分组汇总和排序),通过集算器返回多结果集则不会有这个问题。下面是实现过程。

编写集算脚本

使用集算脚本编辑器编写计算脚本,完成数据计算及数据源准备工作。

wKiom1RN5x-TL1biAAJG73-vwzU571.jpg

    A1:连接数据源demo;

    A2:执行sql查询学生成绩表数据;

    A3:按照学生分组,汇总成绩;

    A4:使用A.top()函数按照总成绩取前三条记录;

    A5:使用A.top()函数按照总成绩取后三条记录;

    A6:将前后三名记录以两个结果集返回。

编辑报表模板

    连接报表数据源demo。

wKioL1RN53TRweDOAAByIWFe_Z4378.jpg

设置数据集

    使用集算报表设计器新建报表模板,并设置集算器数据集,调用上面编辑好的脚本。由于脚本中返回2个结果集,在数据集设置中,需要手动填写数据集名称为“ds1,ds2”,多个数据集名称之间以逗号分隔。

wKiom1RN5yCxLoSmAADpg4LsU6g597.jpg

    其中,dfx文件路径既可以是绝对路径,也可以是相对路径,相对路径是相对选项中配置的dfx主目录的。

    数据集展现形式:

wKioL1RN53TikpREAABbYdRT-2E532.jpg

设置报表表达式

    编辑报表表达式,直接使用集算脚本返回的2个结果集,使用简单的列表表达式,完成报表制作。

wKiom1RN5yGSd8ejAACpSQiYHoc126.jpg

可以看到,使用集算器脚本可以为报表输出多个结果集,而且外置的集算脚本具有可视化的编辑调试环境,编辑好的脚本还可以复用(被其他报表或程序调用)。不过,如果脚本已经调试好,而且不需要复用的时候,要维护两个文件(集算脚本和报表模板)的一致性会比较麻烦,这时候直接使用集算报表的脚本数据集就比较简单了。

    在脚本数据集中可以分步编写脚本完成计算任务,语法与集算器一致,还可以直接使用报表定义好的数据源和参数。使用脚本数据集可以这样完成:

1.  在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择脚本数据集”;

2.  在弹出的脚本数据集编辑窗口中编写脚本;

wKioL1RN53aQKXxtAAGq_tA_PMU245.jpg

    在脚本数据集中直接使用报表定义的数据源demo进行查询,而不必像独立的集算脚本一样必须使用connect()函数连接数据源。报表表达式与使用集算器数据集方式一致,不再赘述。