不规则跨行计算报表

   使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理,比如源数据中有条特殊数据,其他数据都要和它进行占比、求和等计算。集算器具有结构化强计算引擎,集成简单,可以协助报表工具方便地实现此类需求。下面通过一个例子来说明不规则跨行计算报表的实现过程。

  数据库表majorSum存储着某医院重点科室以及全院的患者统计,报表需要按字母顺序呈现各科室的患者占比,并在最后保留全院患者数量。源数据如下:



 

   期望的报表如下:

department

patient

Accident and emergency (A&E)

7.03%

Anaesthetics

12.37%

Breast screening

12.37%

Discharge lounge

14.61%

Ear nose and throat

15.06%

Haematology

17.43%

Neurology

5.23%

Cardinal Community Hospital

44562

 

   集算器可以准备出报表需要的数据,代码如下:



 

   A1=myDB1.query(“select department,patient from majorSum order by department”)

  执行SQL,在数据源myDB1中检索majorSum表,结果如下:



 

   A2=A1.maxp(patient)

  取出全院患者所在的记录,函数maxp可以取出字段值最大的记录,即Cardinal Community Hospital。

  A3=A1\A2

  从完整记录A1中去除全院记录A2,运算符“\”可求出集合间的差集。

  A4=A3.run(string(patient/A2.patient,”#.##%”):patient)

  计算各科室患者的占比。函数run可对A3进行循环计算,函数string可将数字格式化为字符串。结果如下:



 

   A5=A4|A2

  将全院记录和占比数据合并。运算符“|”相当于函数union。集算器支持泛型二维表,因此字符串和数字可以存储在同一个字段。A5的计算结果就是报表需要的数据,如下:



 

   A6:result A5

  将A5返回给报表工具。集算器对外提供JDBC接口,报表工具会将集算器识别为普通数据库,集成方案请参考相关文档。

  上述代码是分步计算,便于观察中间结果,熟练后可以简化为下面两句代码:
    A1=myDB1.query(“select department,patient from majorSum order by department”);
    A2:result(total=A1.maxp(patient),(A1\total).run(string(patient/total.patient,”#.##%”):patient)|total)

  接下来以BIRT为例设计一张简单的list表,模板如下:



 

   预览后可以看到报表结果:



 

   报表调用集算器的方法和调用存储过程一样,比如将本脚本保存为irregulProportion.dfx,则在BIRT的存储过程设计器中可以用call irregulProportion()来调用。同样地,集算器也支持报表参数。

使用Armbian安装OpenWrt是可能的,但需要一些额外的步骤和准备工作。 首先,确保你的设备兼容ArmbianOpenWrtArmbian是一个适用于ARM架构的开源操作系统,OpenWrt是一种支持嵌入式设备的Linux操作系统。你需要在设备的官方网站上查找信息,确认是否有ArmbianOpenWrt的支持。 一旦确认设备兼容,你可以开始准备安装。首先,下载Armbian操作系统的最新版本,并将其写入SD卡或USB设备中。接下来,将SD卡或USB设备插入到你的设备上,并启动设备。 一旦设备启动,你需要登录到Armbian系统中。你可以使用SSH等工具登录到设备的控制台。 在控制台上,你需要下载OpenWrt安装包。你可以在OpenWrt官方网站上找到最新的可用版本。确保选择与你的设备相匹配的安装包。 下载安装包后,你需要将其上传到你的设备中。可以使用SCP等工具来进行上传。 一旦安装包上传完成,你需要解压安装包并运行安装命令。不同的设备可能会有不同的安装命令,所以你可能需要查阅OpenWrt文档或设备的官方网站来获取准确的安装步骤。 安装过程完成后,你应该能够在Armbian中看到OpenWrt的界面。你现在可以通过浏览器登录到OpenWrt,并进行相应的设置和配置。 需要注意的是,安装过程可能会有一些具体的差异,具体取决于你使用的设备和版本。在进行任何操作之前,最好先查阅相关的文档和指南,以确保正确和顺利地完成安装过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值