集算器如何处理类文本数据计算

json

Java有足够多的类库用于解析和生成json,但缺乏后续计算能力。集算器支持多层结构数据,可以不丧失信息地将json解析成可计算的内存数据表进一步处理。

设有如下格式的json数据:

{

“order”:[

{

“client”:”北京润乾软件”,

“date”:”2015-6-23”,

“item” : [

“product”:”HP笔记本”,

“number”:4,

“price”:3200

},

{

“product”:”DELL服务器”,

“number”:1,

“price”:22100

}]

},…]

}

要写入数据库中order表,结构为:orderid,client,date;和orderdetail表,结构为:orderid,seq,product,number,price的orderdetail表,orderid和seq按顺序生成即可。


A


1


=file(“data.json”).read()[email protected]().order


2


=A1.new(#:orderid,client,date)


3


=A1.news(item;A1.#:orderid,#:seq,product,number,price)


4


>[email protected](A2,order)


5


>[email protected](A3,ordedetail)

集算器可将多层json串解析成多层数据集,A2的item字段取值又是一个表。

除了解析外,也可用集算器将多层数据集生成多层json串。

Excel

Excel相当于已经结构化的文本。Java有能解析xls的开源类库(如poi),功能强大但过于底层,开发复杂度高。集算器封装了poi,可读入xls转成二维数据表再进一步运算。

设有range.xls和position.xls的内容分别为:


range.xls


position.xls


range


start


stop


Point


position


Range1


4561


6321


point1


5213


Range2


9842


11253


point2


10254



要针对position.xls的每一行position,在range.xls中寻找到start/stop将其覆盖,然后将range.xls中相应行内容补充到posistion.xls之后。


A


1


=file(“range.xls”)[email protected]()


2


=file(“position.xls”)[email protected]()


3


=A2.derive(([email protected](position>=start&&position<=stop)).range:range,

t.start:start,t.stop:stop)


4


=file(“result.xls”).exportxls(A3)

集算器读入xls后可以充分利用已有的计算能力。用Excel自带的VBA只能硬编码实现JOIN,非常繁琐,有时不得不导入数据库来做。

时间: 2024-11-04 22:45:56

集算器如何处理类文本数据计算的相关文章

集算器如何处理文本计算难题

文本可以说是除了数据库外几乎最常见的数据存储形式,针对文本的计算非常重要.然而文本本身没有计算能力,不象数据库有SQL语法,这样对文本的计算就需要借助程序设计语言编码,而大多数用于文本处理的程序语言都没有集合化的,编写批量运算时很繁琐.比如用Java写个很简单地求和运算就要很多行,如果涉及到过滤分组这种运算就需要几百行代码.近年来新出来的perl,python,R等脚本语言在这些方面有所改善,但对批量结构化计算的支持仍然不足,而且集成性也较差. 还有一种方案是将文本数据导入数据库再利用SQL计算

集算器如何优化复杂报表计算(2)格式布局及过程计算

布局格式 横向分栏 大多数报表工具都支持纵向分栏,但几乎没有报表工具支持横向分栏,我们可以用集算器把数据集事先摆好. A B C 1 =db.query("select a,b,c from T ") 2 =A1.step(3,1) =A1.step(3,2)|[null] =A1.step(3,3)|[null] 3 =A2.derive(B2(#).a:a2,B2(#).b:b2,B2(#).c:c2,C2(#).a:a3,C2(#).b:b3,C2(#).c:c3) 这段代码将3

集算器替代存储过程实现报表数据源

存储过程是SQL语句和流程控制语句的集合,常用来把一个复杂的计算目标分解为多个简单的计算步骤.虽然以复杂性换来了灵活性,但SQL语句固有的缺点仍然体现在存储过程中,比如:分步不彻底.数据无序.缺乏集合.缺乏引用,之前我们也分析过存储过程作为报表数据源的利弊,可点击这里查看. 集算器解决了存储过程的上述缺陷,降低了对开发人员的技术要求,是存储过程理想的替代工具. 报表例子说明 某电信产品厂商有一张报表,主要目的是分析优势产品的销售额.销量.环比等指标,其中优势产品的定义是"在每个州的销量均在前10

集算器协助java处理结构化文本之数据读入

JAVA只提供了指定分割符等最基本的数据读入功能,而其他常见功能都需要自己从底层去实现,比如:按列名读入指定列.指定列的次序.指定数据类型.无分割符等等.JAVA实现这类功能虽然不难,但代码很繁琐,很容易出错. 使用集算器来辅助Java编程,这些问题都不需要自己写代码解决.下面我们通过例子来看一下具体作法. 文本文件data.txt是tab分割的文本文件,有30个列,第一行是具有业务意义的列名,现在需要按列名读入这几列:ID.x1Shift.x2Shift.radio,并按业务公式“((x1Sh

用集算器实现跨行组计算报表

跨行组计算类报表在报表开发中非常常见,如常见的同期比.环比计算.移动平均值计算等.这类报表由于经常要引用其他行列的数据进行相对/绝对位置运算,使得报表工具在实现时并不轻松.功能相对强大的润乾报表需要借助层次坐标和位移坐标,辅以条件表达式和"$"运算符完成,书写和理解都有相当的难度. 其实通过集算器这类报表则非常容易实现,我们来看一个例子.     报表需求:根据订单表和指定年份(参数)按月统计订单金额,以及与上一订单月金额比,与去年同月金额比,样式如下: 这里应该注意的是比去年同期是指

集算器用作Java结构化文件计算类库

有时我们不能使用数据库而采用文件系统存储数据,这时就需要自行完成基于文件的数据计算.但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差.在网上有许多寻找用于文件计算的Java类库的问题,如: http://www.coderanch.com/t/561180/java/java/read-text-file-perform-operation http://stackoverflow.com/questions/9614112/how-to-sort-and-ar

集算器协助Java处理结构化文本之条件过滤

直接用Java实现文本文件中数据按条件过滤会有如下的麻烦: 1.文件不是数据库,不能用SQL访问.当过滤条件变化时需要改写代码.如果要实现象SQL那样灵活的条件过滤,则需要自己实现动态表达式解析和求值,编程工作量非常大. 2.文件太大时不能一次性装入内存处理,而采用逐步读入方式在考虑到性能时又会涉及到文件缓冲区管理.拆行计算等复杂编程. 使用集算器来辅助Java编程,这些问题都不需要自己写代码解决.下面我们通过例子来看一下具体作法. 文本文件employee.txt中保存了员工数据.我们要读取员

报表工具的二次革命之集算器的作用

之前的文章已经大致给大家介绍过大数据计算引擎-润乾集算器了.想必很多人心里还是存在疑惑,集算器作为大数据分析系统,到底它能做些什么?这篇文章,就为大家详细介绍. 降低报表开发难度 降低开发难度从而提高开发效率是集算器的设计初衷,是最容易理解的作用,前面已有粗略介绍. 这方面的细节内容太多,我们会再做一个专门话题详细讲述集算器如何解决报表开发中的各种具体难题以及与常规手段的对比.在这里只做总结性地阐述. 比Java和SQL更易写 如前所述,集算器的设计目标是为了解决报表的数据准备,而目前这个工作一

用集算器实现跨数据库关联报表

实际应用中很多报表的数据来源于多个不同类型的数据库,报表数据源跨数据库是报表开发中的常态.目前实现这类跨库关联报表的方式有多种,但都会存在这样那样的问题. 使用报表工具自身多源关联功能 现在大多数主流报表工具都支持多数据源关联,这在某些方面确实为报表用户带来了便利.然而我们也经常会遇到通过报表自身的多源关联功能很难实现一些跨库关联的报表(由于数据结构和业务本身决定).这当然容易理解,报表工具主要是来做数据展现的,而对数据计算本身来说并不擅长. 即使有的能实现,在报表中做跨库关联计算的效率也较低,