解决 Birt 等报表工具制作报表的几个难题
在上一篇《Birt 如何实现不规则月份统计》中,我们讲解了如何帮助 Birt 制作这种报表的详细过程,在本文中我们再继续讨论几个类似的制作难题,并把说明集中在如何编写集算器 SPL 脚本上,不再赘述如何在 Birt 中引入 SPL 的步骤了。1. 组内跨行计算组内跨行计算是指在计算一行中某个计算列的值时,需要引用到
Java 计算辅助神器
概述应用结构减轻代码量多样性数据源热切换文件计算常规计算使用SQL大文本分段并行Excel数据库并行取数困难计算批量查找数据库切换库外存储过程多数据库混算其他数据源NoSql/Hadoopjson解析与生成xml解析与生成http访问与发布点击下载
SPL 代码优化技巧
SPL是一种面向结构化数据计算的程序设计语言,集算器是SPL语言的java实现,采用网格式编程形式提供了编码和调试的IDE环境,语法比Java和SQL更为简单易懂,开发效率更高。本文将从集算器的实现原理出发列举一些可以提升计算性能的小技巧。1数据类型1.1 数值 SPL里的数值类型有Integer、Lon
SPL 的集合思维
和传统的程序设计语言不同,SPL中集合的应用非常普遍,实际上最常见的序列和序表等本质上都是集合,可以对它们进行真正的集合运算,从而大幅度提高开发效率和代码性能。因此,在使用SPL时,需要特别重视对集合概念的理解。1 SPL中的序列与集合SPL中,序列如同整数、字符串一样是非常常用的基本数据类型,也能进行相应的基本运算。从集合角度出发,SPL提供了两个集合A、B的交、并、联、差等基本运算符:A^B,
SPL 分组优化技巧
1. 常规分组当分组聚合的结果集不大时,可以使用groups。例如有学生成绩表存储在集文件中,表结构如下: 现在计算每个学生的总分数:A1:成绩表的数据装入内存。A2:按照studentID字段分组,计算总分。 如果成绩表数据太大,无法装入内存,则可以用游标方式:A1:得到成绩表的游标。A2:按照studentID字段
SAP 系统大数据量资产负债表的性能优化案例
【摘要】有了固定报表工具之后,这类格式复杂、指标参数任意组合的需求并不难实现,只是原始数据量一大,查询就会非常慢,用户体验变的极差,当多并发请求时,甚至还会对正常业务产生影响!而集算器面对这类问题,却是一把好刀!赶快去乾学院看个究竟吧!SAP 系统大数据量资产负债表的性能优化案例【下载附件】SAP 系统大数据量资产负债表的性能优化案例
mongodb 分组 topN
来源:https://groups.google.com/forum/#!topic/mongodb-user/Rjv6lyUCe1s【摘要】 MongoDB 对于 TopN 功能的需求使用其 shell 脚本来实现有些复杂,而集算器 SPL 语言,则因其离散性、灵活性恰好能弥补 MongoDB 实现方面
esproc vs python 6
本节在数据量比较大的情况下,对比esproc和python。数据量:7000多条万记录,5个字段分别是orderid,clientid,sellerid,amount,date。总大小超过3G。1. 筛选8月份的交易记录esprocA2:f.cursor()根据文件f创建游标并返回,数据扫描完将自动关闭游标。@t, f中第一行记录作为字段名,不使用本选项时默认使用_1,_2,…作为字段名. @c,
esproc vs python 4
1.计算每年同月份增长比esprocA3:用ORDERDATE的年份和月份分组,并将该列命名为y,m,同时计算该组的销售量group()函数分组但不汇总,groups分组同时汇总。A4:按照月份m进行排序A5:新增一列,如果月份等于前一行的月份,则计算增长比并赋值,否则赋值null,将该列命名为yoy。python:import time import numpy as np import pan
esproc vs python 3 数据处理
1.采样(随机的将数据分成30%和70%)esprocA4:A.sort(x)按照x对A进行排序,并取长度的30%A5:差集得到剩下的70%python:import timeimport pandas as pdimport datetimeimport numpy as npimport randoms = time.time()data = pd.read_csv("C:/User
Birt 中实现组内跨行计算
来源:https://forums.opentext.com/forums/discussion/61542/compare-current-row-with-previous-row-value#latestBirt中想要实现组内跨行计算一般要用SQL窗口函数或报表脚本去实现,但代码比较复杂,这种情况下可以用SPL来辅助报表工具。下面以例子来说明。本例中有三个字段,其中SELLERID是分组字段
SPL 教案——程序
spl 教案.pdf
JVM 参数调整对 sortx 的影响
Java虚拟机参数的配置有时候会对SPL的性能产生很大影响,本文从排序函数sortx的使用出发,探索如何通过优化JVM参数配置来提升性能。对分析过程不感兴趣的同学可以直接阅读结论章节。1 内存构成如图,Java虚拟机的内存,也就是常说的堆,主要分为年轻代和年老代两个部分。年轻代存放生命周期很短的对象,年老代存放长期存活的对象。例如,经过几次垃圾回收之后,一个对象仍然存活,那么这个对象就会从年轻代进
BIRT 中对 CSV 数据集传递参数
来源:https://forums.opentext.com/forums/discussion/50068/set-report-parameters-with-csv-files-as-datasource#latest在 birt 中做 SQL 查询可以为数据集指定数据集参数,数据集参数使用时还可以链接到某个报表参数,简单易操作。当然,如果想对 csv 类型的数据文件做查询也很方便,只是 C
SPL 简化 SQL 案例详解:固定分组
在数据库应用开发中,我们经常需要面对复杂的SQL式计算,固定分组就是其中一种。固定分组的分组依据不在待分组的数据中,而是来自于外部,比如另一张表、外部参数、条件列表等。对于特定类型的固定分组,用SQL实现还算简单(比如:分组依据来自另一张表,且对分组次序没有要求),但对于比较通用、灵活的要求,实现起来就困难了。而对于SPL来说,完全可以轻松解决固定分组中的各类难题,下面就用几个例子来说明。表sal
SPL 简化 SQL 案例详解:组内运算
在开发数据库应用时,经常在分组后需要对组内数据进行计算,例如:列出近3年每年都发表过论文的学生名单(按论文发表年分组后列出每年都出现的学生清单),统计全部参加了历次培训的员工(按培训分组后统计每次都有的员工人数),选出每位客户的高尔夫成绩最高的三天(按客户分组后按天计算成绩的Top3)等等。对于SQL来说,完成这类运算一般较为复杂,需要嵌套多层,往往导致代码难以理解和维护困难。而SPL非常擅长这类
结构化文本计算示例(一)
结构化文本是很常见的文件格式,对结构化文本的计算也是很常见的需求。在实现这种计算时,一种很容易想到的办法是将文件导入数据库后再计算,但这会消耗大量时间以及昂贵的数据库资源,而且有的场合下并没有合适的数据库可用。这样一来,我们就会有一个自然的想法,如果能够直接计算就会方便多了。可惜的是,一般高级语言都没有提供针对结构化文本的基本运算类库,而想要通过硬编码完成这些运算又非常繁琐,不仅代码复杂,可维护性
集算器助力 ireport
在使用 Jasper 报表工具制作报表时,常常会遇到数据来自多个数据源的情况,通常的做法是使用主子报表或者使用javabean作为数据源。使用主子报表通常会增加报表设计的复杂度,而使用javabean做数据源,则需要一个javabean类来支持,并且为了在设计报表时能够看到数据,还要为ireport提供一个静态方法,该方法用于返回上面定义javabean的一个结果集。显然,上面这两种办法都不太方便
SPL 教案——分组
spl 教案分组.pdf
在 Birt 中实现交叉表的动态分组
来源: https://forums.opentext.com/forums/discussion/173783/dynamic-grouping-of-crosstab-in-birt#latest 在业务填报中,有时会需要基于时间段进行动态交叉分组统计,根据时间段长短实现按天、按周、按月、按年动态分组。例如:某企业根据业务需要,需按照2个参数(开始日期、结束日期)实现一段时间内