java计算包-九游会登陆

java程序中的数据计算

由于各种各样原因,我们经常需要在java程序中进行数据计算处理

系统设计要求,业务逻辑与数据存储分离

数据分散在不同的数据源中

计算逻辑复杂,sql实现困难

在java中实现数据计算的痛点

代码繁琐冗长,复杂计算实现困难,不易编写和维护
这么长的代码仅仅实现了单个字段分组单个字段汇总的功能
需要简化java计算的实现手段

解决办法:java专业计算包——集算器

配合java使用的专业计算(jar)包,简化java计算代码
说明:spl是esproc采用的脚本语言,dfx为脚本文件,相当于外置存储过程,java通过jdbc接口传入spl语句实现结构化计算或执行脚本。

spl实现分组

写代码,简单才是硬道理

常规分组

汇总每个人的值班天数

a
1 =file(“/users/test/duty.xlsx”).importxls@tx()
2 =a1.groups(name;count(name):count)
这类基本运算还可以直接用sql写:select name,count(name) from user/test/duty.xlsx group by name

每组top n

获取每个月、每个人、头三天的加班记录

a
1 =file(“/users/test/duty.xlsx”).importxls@tx()
2 =a1.groups(month(workday):mon,name;~.top(3):top3)

对位分组

按顺序分别列出使用 chinese、english、french 作为官方语言的国家数量

a
1 =connect(“mysql”)
2 =a1.query@x(“select * from world.countrylanguage where isofficial=‘t’”)
3 [chinese,english,french]
4 =a2.align@a(a3,language)
5 =a4.new(a3(#):name,~.len():cnt)

简化复杂sql

计算目标:某支股票最长连续涨了多少交易日
select max(continuousdays)-1
from (select count(*) continuousdays
	from (select sum(changesign) over(order by tradedate) unrisedays
		from (select tradedate,
			case when closeprice>lag(closeprice) over(order by tradedate)
			then 0 else 1 end changesign
		from stock) )
	group by unrisedays)

sql解法

  • sql在使用窗口函数的情况下嵌套三层完成;
  • 你试试能读懂吗?
a
1 =stock.sort(tradedate)
2 =0
3 =a1.max(a2=if(closeprice>closeprice[-1],a2 1,0))

spl解法

其实这个计算很简单,按照自然思维:先按交易日排序(行1),然后比较当天收盘价比前一天高就 1,否则就清零,最后求个最大值(行3)

多样性数据源支持

java计算能力难以胜任多样性数据源

集算器内置接口便捷访问

  • mongodb、redis、cassandra、elasticsearch
  • hadoop
  • excel、json、xml、txt
  • http restful、web services、olap4j 、...
mongodbexceltxt文本轻松获得(复杂)计算能力

丰富的计算能力(部分)

辅助mongodb计算

  • join运算
  • 单表多次参与运算
  • 简单in运算
  • 外键对象化
  • apply算法的简单实现循环合集
  • 多表合集
  • 并集
  • topn运算
  • ……

辅助数据库计算

  • 使用序列参数向sql传递值的列表
  • 不同数据库翻译sql:适应不同类型数据库
  • 单表分段并行取数
  • 多表并行取数
  • 多库并行写数
  • 同构表拼接动态sql语句
  • ……

结构化文件计算

  • 小文件数据过滤
  • 文本数据读取
  • 小文件数据汇总求和
  • 小文件数据跨列计算
  • 小文件数据排序
  • 小文件分组聚合
  • 多个小文件数据关联查询
  • 小文件数据分组后过滤
  • ……

大文件计算

  • 大文件数据过滤
  • 大文件数据汇总求和
  • 大文件数据跨列计算
  • 大文件数据去重计数
  • 大文件数据排序
  • 大文件分组聚合,小结果集
  • 大文件分组聚合,大结果集
  • ……

更多资源

案例

北京润乾信息系统技术有限公司
网站地图