- 博客(128)
- 收藏
- 关注
集算器实现SQL动态列计算的示例
被数据库厂商扩展后的SQL也可动态拼接出语句执行,但SQL的集合运算和有序计算不方便,实现动态列计算很繁琐,往往要借助高级语言拼出动态SQL。 免费的集算器支持动态脚本、有序计算、显式集合,可以弥补这一不足。下面举例说明SQL开发中常见的动态列计算问题,以及集算器对应的解法。列间排序 表order有6个整数类型的字段,现在要对每条记录的字段...
2016-01-29 09:46:41
329
集算器协助SQL实现固定排序
SQL通常只能按某字段进行排序,如果要按照指定列表排序,就只能用decode或union,但项目一多SQL就会很长,项目如果是变动的参数,SQL就更难实现,经常需要建立临时表。而且项目和字段值不一定相等,差异部分有时要补齐在排序结果中,有时要排除在外,用SQL处理起来难度很大。 集算器支持对齐函数、有序计算、显式集合,可轻松实现固定排序。集算器还支持独立使用、控制台执行、报表调用...
2016-01-19 09:48:08
267
集算器协助SQL实现非等值分组
SQL通常只能按源表字段进行分组,如果分组依据来自另一张表、外部参数、条件列表,用SQL就很繁琐。有时分组依据需要动态生成,这些往往要借助高级语言实现。有时分组依据和源表不完全对应(或区间没有交集),差异部分有时要补齐在分组结果中,有时要排除在外,用SQL处理起来难度很大。 集算器支持对位分组、枚举分组、有序计算,可轻松实现上述非等值分组。集算器还支持独立使用、控制台执行、报...
2016-01-15 08:42:14
213
用集算器实现文本比对
控制台命令、JAVA、python、perl都可以进行简单的文本比对,但这些工具不擅长集合运算、结构化运算,编写多线程代码较复杂,处理多字段对比、大文件对比、异构文件对比等情况时很繁琐。 免费的集算器支持集合运算、游标运算、结构化运算,简化了多线程代码,可以弥补上述不足。集算器应用简单,支持独立使用、控制台执行、JAVA代码调用,详情参考【集算器实现文本处理的应用方...
2016-01-12 08:46:46
241
集算器与R语言的循环函数对比
循环函数可以遍历数组或集合中的每个成员,可以将结构复杂的循环语句用简单的函数形式表达出来,可以减少代码量并提高可读性。集算器和R语言都支持循环函数,下面将对比两者用法上的异同。1、生成数据 生成1到10之间的奇数。 集算器:x=to(1,10).step(2) 代码中,to(1,10)生成了1到10之间的连续整数,step函数根据上一步计算结果间隔取数,最终结果是[1,...
2015-12-25 17:35:44
311
集算器和R语言处理外存文本文件的对比
作为数据计算语言,集算器和R语言都提供了丰富的功能用来处理外存中的文本文件。两者在基本用法上有很多相似之处,但区别也很明显,比如处理列宽固定的文件、读写指定的列、处理大文本文件,计算性能等方面。下面详细对比两者的异同。1、基本功能对比 描述: sales.txt共有六列,列之间以制表符(\t)分割,行之间以换行符(\n)分割,其中第一行为列名。请将该文件读入内存,再原样写入新...
2015-12-22 09:42:44
134
集算器序表和SQL数据表的异同
集算器序表和SQL数据表都是有结构的二维数据对象,都有记录、索引、主键的概念,都可以应用于结构化数据的计算。虽然都可以应用于结构化数据的计算,但两者的应用场景却有明显的区别,序表适合解决较复杂但数据量不是很大的计算问题,而数据表适合进行常规但可能数据量巨大的计算。 两者的不同是由底层机制决定的。 序表具有有序的特点,每条记录、每列数据都有确定的序号;序表支持显式集合,序表之间可以...
2015-12-18 08:48:13
157
集算器用作Java结构化文件计算类库
有时我们不能使用数据库而采用文件系统存储数据,这时就需要自行完成基于文件的数据计算。但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差。 使用免费的集算器可以弥补这一不足。集算器封装了丰富的结构化文件计算函数,并提供JDBC接口。JAVA应用程序可以将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器用作Java计算类...
2015-12-15 10:42:01
125
Java查询大文本
有时我们需要查询大文本而不是数据库,这时就需要流式读入文件并实现查询算法,还要进行并行处理以提高性能。但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差,难以实现高效的并行处理。 使用免费的集算器可以弥补这一不足。集算器封装了丰富的结构化文件读写和游标计算函数,书写简单代码就能实现并行计算,并提供了易用的JDBC接口。JAVA应用程序可以将集算器脚本文件...
2015-12-11 08:35:09
157
集算器协助报表工具实现跨行运算
有些报表工具不直接支持跨行计算,需要用表脚本实现,非常麻烦,遇到多层分组的情况会更复杂。集算器支持有序计算,可以弥补这一不足。报表工具可将集算器脚本文件当做数据库存储过程执行,详情参考集算器辅助报表开发的集成方法。 下面举例说明报表开发中常见的跨行计算,以及集算器对应的解法。 比上期和同期比 库表sOrder存储着每个销售员每天的订单,报表需要统计指定时间段内各月份销售额的...
2015-12-08 08:26:01
138
解决报表特殊布局的若干示例
有些特殊布局难用报表工具提供的功能直接实现,但如果准备出合适的数据源,就能大大降低报表设计的难度。 使用免费的集算器可以弥补这一不足。集算器支持集合运算、有序计算、动态脚本执行,还提供了简单易用的JDBC接口,报表工具可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器辅助报表工具的应用过程。 下面举例说明报表常见的特殊布局,以及集算器对应的...
2015-12-04 08:22:10
155
报表工具的动态数据源实现
有时候我们需要用参数动态指定数据源,或将多数据源连接为单数据源,或向子报表、table控件动态传入数据源名。对于此类需求,报表工具经常要借助高级语言实现或牺牲安全性以降低复杂度,尤其是BIRT、Jasper等单源报表。 使用免费的集算器可以弥补这一不足。集算器封装了丰富的结构化计算函数,支持动态解析表达式,支持多数据源混合计算,书写简单脚本就能实现动态数据源。集算器还提供了简单易用的J...
2015-12-02 08:55:29
283
在Java中辅助报表工具展现json
JSON是半结构化数据,Java和报表工具只提供了简单解析的类库,很难进行深度计算。而使用集算器可降低JSON的计算难度。报表工具可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器辅助报表工具的应用过程。 下面举例说明报表工具呈现JSON时常见的难题,以及集算器对应的解法。 JSON分组汇总 order.json存储着订单记录,现在要...
2015-11-27 08:58:31
220
用集算器准备非常规格式报表的数据
有些非常规的格式很难用报表工具提供的功能直接实现,但如果准备出合适的数据源,就能大大降低报表设计的难度。 使用免费的集算器可以弥补这一不足。集算器提供了集合运算,支持动态脚本执行,还提供了简单易用的JDBC接口,报表工具可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果。 集算器与报表工具的集成结构如下: 下面举例说明集算器实现横向分栏的过程:...
2015-11-24 08:14:08
120
BIRT实现字段拆分表
来源:http://developer.actuate.com/community/forum/index.php?/topic/36204-split-data-row/ 。 将字段拆分为多条记录,可以用存储过程或报表脚本来实现,但代码比较复杂,这种情况下可以用集算器来辅助报表工具,下面用例子来说明。 库表data有两个字段,需要将ANOMOALIES字段按空格拆分为多个字符串...
2015-11-20 08:30:27
203
不规则月份统计报表的实现
来源:http://developer.actuate.com/community/forum/index.php?/topic/36323-months-and-quarters-group-issue/。 不规则月份统计:如果起始时间是2014-01-10,则将2014-01-10到2014-02-09作为一组,将2014-02-10到2014-03-9作为一组。如果起始时间是20...
2015-11-17 08:17:48
161
Jasper计算opening balance
来源:http://community.jaspersoft.com/questions/850400/how-create-report-opening-balance-using-jasper-reports。 根据存取金额计算初期余额时需要进行跨行计算,用Jasper表达式可以实现,但步骤复杂有一定难度,用集算器协助Jasper则可以轻松实现,下面用简化的例子来说明。 da...
2015-11-13 08:49:20
672
集算器协助Jasper计算贷款分期
来源:http://community.jaspersoft.com/questions/851148/loop-jasper。 根据贷款额计算贷款分期时需要进行循环计算和跨行计算,用存储过程或Scriptlets实现的难度较大,用集算器协助Jasper可以轻松实现,下面用例子来说明。 库表loan存储着贷款信息,包括贷款总额、按月分期数、年利率。要求用Jasper实现一张分组表...
2015-11-10 08:25:44
175
用BIRT实现报表的组内跨行计算
来源:http://developer.actuate.com/community/forum/index.php?/topic/36160-dealing-with-previous-rows-groups-sorts-and-subtotals/。 组内跨行计算一般要用SQL窗口函数或报表脚本去实现,但代码比较复杂,这种情况下可以用集算器来辅助报表工具,下面用例子来说明。 ...
2015-11-06 08:19:09
168
1
用Jasper计算交叉增长率
来源:http://community.jaspersoft.com/questions/847490/how-get-annual-growth-rate-crosstab 。 交叉表的每一列都是动态生成的,进行列间计算时需要动态引用,用Jasper脚本实现此类需求有一定难度,用集算器在数据准备阶段实现则相对简单,下面用例子来说明。 数据库表store存储着多种产品在2014...
2015-11-03 08:46:46
148
在主表中动态插入子表字段
库表dColThread是主表,主键是tID。dColQuestion是子表,外键是tID,如下: dColThread: dColQuestion; 报表需要根据ApplicationName查询主表并以列表的形式展现数据。主表每条记录对应的status字段值有多个,但不超过5个,需要横向插入主表的Phone、Decline字段之间,依次命名为Quest...
2015-10-30 09:44:27
276
不规则跨行计算报表
使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理,比如源数据中有条特殊数据,其他数据都要和它进行占比、求和等计算。集算器具有结构化强计算引擎,集成简单,可以协助报表工具方便地实现此类需求。下面通过一个例子来说明不规则跨行计算报表的实现过程。 数据库表majorSum存储着某医院重点科室以及全院的患者统计,报表需要按字母顺序呈现各科室的...
2015-10-27 08:30:17
233
原创 多数据源主子报表的处理(Jasper为例)
主报表和子报表(或Table表)使用不同的数据库时。JasperReport/Birt等报表工具从功能上可以处理,但在子报表中无法直接使用数据源名,需要使用显式的数据库账号、口令。可以看到这种方式存在一定的安全隐患,而且实施过程比较复杂。 集算器具有结构化强计算引擎,支持多样性数据源,集成简单,可以协助报表工具方便地实现此类需求,下面通过一个例子来说明主子报表多数据源的实现过程。...
2015-10-20 08:16:55
665
MongoDB join mysql的报表制作
多样性和多数据源问题使用JasperReport等报表工具本身不易处理,比如展现MongoDB和mysql的混合运算。虽然JasperReport/Birt有virtual data source或table join等功能,但只在商业版或高端版本出现,在免费版中实现难度很大,而且功能也有较大局限,无法对连接后的数据进行类似SQL的结构化计算。 集算器具有结构化强计算引擎,支持多样...
2015-10-16 08:52:05
388
用Jasper report实现MongoDB join
多样性数据源是报表开发的常见问题,但用JasperReport等报表工具本身难以处理,比如展现两个MongoDB collection连接的结果。虽然Jasper Report有virtual data source或table join,但这些功能只在商业版或高端版本出现,在免费版中实现的难度很大。而且这些功能只支持两个数据源的连接,要实现多连接则麻烦得多。另外,这些功能只是图形化界面,...
2015-10-13 08:01:52
208
结果集复用来提升报表性能
报表项目中,如果一个报表有多个sql数据集,可能会出现其中两个或者几个数据集很相似的情况。如果相似数据集的结果可以复用,就能有效的提高性能。但是,sql数据集的结果是没有办法复用的。例如下面这个“销售排名、分布报表”(db2数据库): 如果采用sql结果集,需要两个数据集:Ds1:SELECT * from (select e.eid 雇员编号,max(...
2015-09-25 08:37:09
165
集算器实现外存排序的代码示例
在数据分析计算中,将表中的记录排序,是很常见的需求。集算器中,可以用sort函数为序列或者序表中的数据排序。如果需要排序的数据量巨大,就不能一次将它们读入内存,这样普通的排序方法就无法执行了,此时需要使用外存排序。 如,文本文件Order_Foods.txt中,存储了50,000条食品的订单信息: 现在,需要将订单中的数据按照以下要求排序:1、按照食品名称升序排序;2、按...
2015-09-22 08:30:13
133
文件计算的并行分组汇总
在前文中我们介绍了文件并行的查找与过滤的实现方法,这里再介绍一下查找过滤加分组汇总的做法。和上一篇一样,这里只讨论小结果集,也就是计算结果在内存中可以装下的情况。 用多线程实现查找过滤和分组汇总的思路是:采用多线程方式,每个线程处理一部分数据的查找过滤和分组汇总,最后将每一部分检索的结果合并分组汇总,再在主程序中完成最终的过滤。这里通过一个例子来看一下具体做法。考虑...
2015-09-18 09:03:06
164
文件计算的并行查找与过滤
润乾集算器具备文件计算能力。对于数据量相对较大的情况,集算器提供了多线程并行的功能,可以充分利用计算机的多CPU多核的计算能力,获得接近或超过传统数据库的计算性能。 这里只考虑小结果集的情况,即数据计算结果在内存可以装下的情况。 集算器多线程并行结构示意图如下: 如上图所示,集算器通过一个主脚本将任务分配给多个子脚本,每个子脚本分别访问本地数据的一部分进行计算。子脚...
2015-09-15 09:03:11
147
多层外键连接的文件计算实现
在结构化数据计算任务中,会出现源数据来自多层外键关联的多个数据表的情况。例如要在订单系统中计算出比较特殊的订单,就遇到了下图中的多层外键结构。具体的计算需求是:求产品供应商和订单的客户在同一个地区的订单,这些订单按照客户分组求每组的订单总价和个数。 数据结构示意图如下: 如果用数据库完成,需要的SQL脚本如下:select cid,count(ordered),sum(price*...
2015-09-11 08:00:49
119
在外存中实现分组的代码示例
在数据分析中,我们经常需要将数据分组,然后计算出各组的汇总值,或者在各组中分别计算。集算器中,可以用groups函数计算数据的分组汇总结果,更可以用group函数将表中记录分成多组,以便后续计算。但是,如果需要排序的数据量巨大,情况就不同了,这时是不能一次将它们读入内存的,这样普通的分组汇总,或者分组的方法就无法执行了,此时就可能需要使用外存分组。 下面,先来准备一个大数据表,简单模...
2015-09-08 08:55:36
170
集算器辅助报表工具的应用过程
集算器具有丰富的(半)结构化计算函数,支持动态解析表达式,支持多样性数据源。报表工具可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果。 集算器与报表工具的集成结构如下: 下面举例说明报表集成集算器的方法。 数据库表SALES3存储着订单数据,部分数据如下: 现在要计算出指定年份每个月订单的总金额、最大订单金额、最小订单金额,以及总订单...
2015-09-01 08:23:23
159
集算器协助Java处理JSON
json是半结构化数据,JAVA只能简单解析,很难进行深度计算。集算器支持集合运算、有序计算、动态脚本执行,可降低json的计算难度。集算器还提供了简单易用的JDBC接口,JAVA可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器用作Java计算类库的应用结构。 下面举例说明JAVA处理json时常见的难题,以及集算器对应的解法。 jso...
2015-08-28 08:35:54
179
桌面端数据分析程序语言
桌面端数据分析程序语言,其重点是使用方便且计算能力强。考察某种语言是否适合进行桌面端数据分析,可以用六个指标来衡量:应用环境、文件处理、文本和字符串处理、结构化数据处理、模型预测算法、其他非重点指标。 一、应用环境 进行桌面数据分析的用户绝大多数都不是专业程序员,他们更习惯在windows下工作,他们缺乏专业程序员拥有的配置环境的技能,因此桌面端分析程序语言的应用环境应当足够...
2015-08-25 08:31:09
140
将MongoDB导出成csv文件
来源:https://plus.google.com/+VicNgrail/posts/ebS9JUtFopw。 Mongodb可以存储非结构化数据,要将这些数据导出为标准的结构化数据会存在一定的困难。用集算器结合MongoDB可以方便的导出标准化数据,下面看一下具体做法。 Collection test的部分数据如下:/* 0 */{ “_id” : Objec...
2015-08-21 08:38:51
892
MongoDB的本地化排序
对于本地化语言(例如:中文),mongodb是按照UNICODE编码排序,而不是根据本地语言的编码排序。用esProc集算器结合mongodb可以方便的实现本地化语言的排序(例如:中文按照拼音排序)。下面我们以中文为例,来看一下具体做法。 Mongodb中的集合person保存了姓名和性别如下: > db.person.find() { “_id” : Object...
2015-08-18 08:33:54
211
在MongoDB中实现交叉汇总
MongoDB实现交叉汇总比较困难,如果将数据取出,用Java等高级语言来汇总的话,也相当复杂。因此,可以考虑用esProc集算器辅助MongoDB完成交叉汇总。下面我们通过一个例子来看一下具体做法。 Student集合如下: db.student.insert ( {school:’school1′, sname : ‘Sean’ , sub1: 4, sub2 :5 })...
2015-08-14 07:57:35
325
如何做MongoDB的数组中查下标
MongoDB可以按照下标查出内嵌数组的元素,但是不能通过元素的值来查询下标。例如:数组中的元素是按照排名的先后顺序存放的人员姓名,MongoDB可以根据排名(数组下标)来找姓名,但是不能通过姓名查找排名(数组下标)数值。esProc集算器可以协助MongoDB实现这个需求,下面通过例子来看一下具体做法。 MongoDB的集合b中,保存了姓名和朋友(数组)。朋友数组中的人名是按照排...
2015-08-11 08:17:04
1396
集算器解析动态JSON入库
来源:http://bbs.csdn.net/topics/390611005 。 系统采集的JSON格式数据(s.json)如下: { “SUCCESS”: [ { "MESSAGE": "IMEI Service List", "LIST": { "MOVISTA...
2015-08-07 08:42:21
309
MongoDB里做表间关联
MongoDB不支持join,其官网上推荐的unity jdbc可以把数据取出来进行二次计算实现join运算,但收费版才有这个功能。其他免费的jdbc drive只能支持最基本的SQL语句,不支持join。如果用Java等编程语言将数据取出后实现join计算,也比较复杂。 用免费的集算器esProc配合MongoDB,可以实现join计算。这里通过一个例子来说明一下具体作法。 ...
2015-08-04 07:53:58
717
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人