解决 Birt 等报表工具制作报表的几个难题

本文介绍了如何利用集算器SPL脚本解决Birt报表中的组内跨行计算、跨库数据源关联、字段拆分、主表动态插入子表字段等难题,提供具体的SPL代码示例。
摘要由CSDN通过智能技术生成

在上一篇《Birt 如何实现不规则月份统计》中,我们讲解了如何帮助 Birt 制作这种报表的详细过程,在本文中我们再继续讨论几个类似的制作难题,并把说明集中在如何编写集算器 SPL 脚本上,不再赘述如何在 Birt 中引入 SPL 的步骤了。

1.        组内跨行计算

组内跨行计算是指在计算一行中某个计算列的值时,需要引用到组内其它行的数据来进行计算。比如下面这个例子:

库表 sample 有三个字段,其中 id 是分组字段。需要设计一张分组表,使用 id 分组,明细字段是 v1,v2 以及计算列 crossline, 其中 crossline 的算法是本条记录 v1、v2 之和加上本组上一条记录的 v1、v2 之和。示例源数据如下:

id v1 v2
1 1 2
1 2 3
2 1 1
2 2 2
3 3 3

最后要展现的报表结果如下图所示:

编写集算器 SPL 代码如下:

  A
1 =connect("demo")
2 =A1.query("select   *, 0 as crossline from sample")
3 >A2.group(id).run(~.run(v1+v2+v1[-1]+v2[-1]:crossline))
4 >A1.close()
5 return   A2

 

A1   连接数据库

A2   查询数据库,同时多产生一列常数备用。

A3   按 id 分组,并在每组数据中修改计算列 crossline,最后合并,其中 v1[-1]、v2[-1] 是集算器特有的定位上一行记录中字段的写法。

A4   关闭数据库

A5   将 A2 中的计算结果数据集返回给报表工具

 

2.        跨库数据源

制作报表的数据往往来自于多种数据源,比如不同的物理数据库、文本文件、Excel 文件等,这些数据在报表中往往还需要相互关联进行运算。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值