`
datamachine
  • 浏览: 156752 次
社区版块
存档分类
最新评论

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

阅读更多

  有时我们不能使用数据库而采用文件系统存储数据,这时就需要自行完成基于文件的数据计算。但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差。

  使用免费的集算器可以弥补这一不足。集算器封装了丰富的结构化文件计算函数,并提供JDBC接口。JAVA应用程序可以将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器用作Java计算类库的应用结构。

  下面举例说明JAVA中常见的结构化计算,以及集算器对应的解法。

文本查询

  sOrder.txt是tab分割的文本,现在要用JAVA查询出指定时间段内的订单。

  源数据如下:
 

  集算器代码:
 

  读入文件,默认分隔符是tab,@t表示将第一行读为列头。之后执行条件查询。startDate和endDate是输入参数,比如2010-01-01至2010-12-31。结果:

文本排序

  针对sOrder.txt,请在JAVA中按照客户代码降序排序,按照年、月升序排序。

  集算器代码:=A1.sort(-Client,year(OrderDate),month(OrderDate))

  解释:降序排列使用“-”,年、月需要计算获得。

  引申:如果要在查询的基础上排序,可以写作=A2.sort(…),或者=A1.select(…).sort(…)

  结果:

分组汇总:计算出每个销售员每年的销售额和订单数

  代码:=A1.groups(SellerId,year(OrderDate);sum(Amount),count(~))

  解释:函数group可在分组的同时进行汇总,~表示每组或当前组,count(~)等于count(OrderID)。

  结果:
 

获得唯一值:

  列出sOlder中的客户名单。

  代码:=A1.id(Client)

  结果:
 

去除重复

  保留sOlder中每个客户每个销售的第一条记录。

  代码:=A1.group@1(Client,SellerId)

  解释:函数group用来分组(可以不汇总),@1表示每组取第1条记录。

  结果:
 

TopN

  找到每个销售员销售额最大的3笔订单。

  代码:=A1.group(SellerId;~.top(-Amount;3):t).conj(t)

  解释:函数top过滤出TopN,”-”表示逆序,函数conj用于合并。

  引申:如果只取最大的一笔订单,可以用maxp函数。

  计算结果:
 

关联计算
  emp.txt是tab分割的文本,其EId字段对应sOrder中的SellerId字段,请在JAVA中将emp.txt的Name、Dept、Gender这三个字段对齐到sOrder.txt。

  源数据如下:
 

  集算器代码:

  函数join执行连接运算,并将两个表改名为s和e,@1表示左连接。之后从连接的表中取得需要的字段,组成新的结构化二维表格。结果:
 

  引申:@1表示左链接,@f表示全连接内连接无选项。

  前面的例子假定文件较小,如果文件较大无法放入内存,可用集算器游标进行计算,详情参考相关文档。

 

  • 大小: 26.1 KB
  • 大小: 15.8 KB
  • 大小: 44.5 KB
  • 大小: 48.6 KB
  • 大小: 19.4 KB
  • 大小: 10.8 KB
  • 大小: 18.2 KB
  • 大小: 45.2 KB
  • 大小: 36.2 KB
  • 大小: 38.7 KB
  • 大小: 46.5 KB
0
0
分享到:
评论

相关推荐

    Java语言程序设计

    目录第1章 Java语言基础知识 1.1 Java语言与面向对象的程序设计 1.1.1 面向对象的程序设计思想 1.1.2 Java语言的特点 1.1.3 Java类库 1.2 Java程序概述 1.2.1 Java开发环境 1.2.2 Application举例 1.2.3 ...

    java 面试题 总结

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    基于MYSQL+JAVA编写的图书管理系统,数据库课程设计作业.zip

    界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    超级有影响力霸气的Java面试题大全文档

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    python3.6.0入门指南(官方版)

    如果你要用计算机做很多工作,最后你会发现有一些任务你更希望用自动化的方式进行处理。比如,你想要在大量的文本文件中 执行查找 / 替换,或者以复杂的方式对大量的图片进行重命名和整理。也许你想要编写一个小型的...

    C++大学教程,一本适合初学者的入门教材(part2)

    1.11 结构化编程 1.12 典型C++环境基础 1.13 C++与本书的一般说明 1.14 C++编程简介 1.15 简单程序:打印一行文本 1.16 简单程序:两个整数相加 1.17 内存的概念 1.18 算术运算 1.19 判断:相等与关系...

    C++大学教程,一本适合初学者的入门教材(part1)

    1.11 结构化编程 1.12 典型C++环境基础 1.13 C++与本书的一般说明 1.14 C++编程简介 1.15 简单程序:打印一行文本 1.16 简单程序:两个整数相加 1.17 内存的概念 1.18 算术运算 1.19 判断:相等与关系...

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    • SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和静态图像格式 (如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) • GSM GSM GSM GSM 电话技术 (依赖于硬件) • ...

    Python 2.5

    JPython是用Java写的Python,它完全支持Java,在这个环境下使用Python可以随意地使用Java的类库。语言扩展可以用C、C++或Java为Python编写新的新言模块,如函数。或者与Python直接编译在一起,或者采用动态库装入...

    C++大学教程

    1.11 结构化编程--------------------------------------------------------8 1.12 典型C++环境基础---------------------------------------------------8 1.13 C++与本书的一般说明-------------------------...

Global site tag (gtag.js) - Google Analytics