集算器协助MongoDB计算之交叉汇总
MongoDB实现交叉汇总比较困难,如果将数据取出,用Java等高级语言来汇总的话,也相当复杂。因此,可以考虑用集算器esProc辅助MongoDB完成交叉汇总。下面我们通过一个例子来看一下具体做法。
Student集合如下:
db.student.insert ( {school:'school1', sname : 'Sean' , sub1:4, sub2 :5 })
db.student.insert ( {school:'school1', sname : 'chris' , sub1:4, sub2 :3 })
db.student.insert ( {school:'school1', sname : 'becky' , sub1:5, sub2 :4 })
db.student.insert ( {school:'school1', sname : 'sam' , sub1: 5,sub2 :4 })
db.student.insert ( {school:'school2', sname : 'dustin' , sub1:2, sub2 :2 })
db.student.insert ( {school:'school2', sname : 'greg' , sub1:3, sub2 :4 })
db.student.insert ( {school:'school2', sname : 'peter' , sub1:5, sub2 :1 })
db.student.insert ( {school:'school2', sname : 'brad' , sub1:2, sub2 :2 })
db.student.insert ( {school:'school2', sname : 'liz' , sub1: 3,sub2 :null })
希望能够统计出如下的交叉表:每行一个学校,第一列是sub1成绩为5的人数,第二例是sub1成绩为4的人数,以此类推。
集算器的脚本如下:
A1: 连接MongoDB数据库,ip和端口号是localhost:27017,数据库是test,用户名和密码都是test。
A2: 使用find函数从MongoDB中取出集合student,形成游标。esProc在find函数中采用了和mongdb的find语句一样的参数格式。esProc的游标是分批读取和处理数据,可以避免数据量过大,内存出现溢出的情况。这里数据量不大,所以用fetch函数一次取出。
A3:首先按照学校分组。
A4:学校分组之后,每组内部按照[1,2,3,4,5]的序列对齐分组,再求每一个对齐分组的长度。
A5:对A4的长度数按照需求放入相应的位置,生成结果排列。
结果如下:
需要说明的是:集算器esProc并不包含MongoDB的java驱动包。用esProc来访问MongoDB,必须提前将MongoDB的java驱动包(要求2.12.2或以上版,如mongo-java-driver-2.12.2.jar)放到[esProc安装目录]\common\jdbc中。
集算器esProc协助MongoDB计算的脚本很容易集成到java中,只要增加一行,写成resultA5即可向java输出resultset形式的结果,具体的代码参考esProc教程。同样,用java调用esProc访问MongoDB也必须将mongdb的java驱动包放到java程序的classpath中。
转载于:https://blog.51cto.com/report5/1630044
集算器协助MongoDB计算之交叉汇总相关推荐
- 集算器协助Java处理结构化文本之条件过滤
直接用Java实现文本文件中数据按条件过滤会有如下的麻烦: 1.文件不是数据库,不能用SQL访问.当过滤条件变化时需要改写代码.如果要实现象SQL那样灵活的条件过滤,则需要自己实现动态表达式解析和求值 ...
- java跨库join方案_集算器协助java处理多样性数据源之跨库关联
Java的数据计算类库RowSet提供了JoinRowSet和FilteredRowSet类,可以进行跨库的关联计算,但是有很多局限.首先,JoinRowSet只支持inner join,不支持out ...
- 集算器协助SQL实现非等值分组
SQL通常只能按源表字段进行分组,如果分组依据来自另一张表.外部参数.条件列表,用SQL就很繁琐.有时分组依据需要动态生成,这些往往要借助高级语言实现.有时分组依据和源表不完全对应(或区间没有交集), ...
- 协助 MongoDB 计算之本地化排序
软件本地化,可让用户根据自己的语言环境.使用习惯来选择不同的语言版本,从而最大限度提高使用体验.随着软件技术的进步,本地化能力得到广泛支持.不断向前发展,也成为软件成熟的重要标志.本文讨论的Mongo ...
- oracle测试报告模板,Oracle与集算器对照测试报告
1.测试目的 针对相同的硬件环境和计算任务,对比Oracle和集算器的性能差异,为客户选型提供参考. 2.硬件环境 设备数量:1台 CPU:16核Intel(R) Xeon(R) CPU E5620 ...
- 用R和集算器计算连续上涨5天的股票
目标:通过日交易数据,从多只蓝筹股中选出连续上涨5天的股票. 思路:导入数据:过滤出上个月的数据:按照股票代码分组:将数据按日期排序:计算出每天比上一天的收盘价的增长额:计算出连续正增长的天数:过滤出 ...
- 集算器并行处理大文本文件的示例
集算器可以方便地用并行方式处理大文本文件,下面通过一个例子来说明使用方法. 假设有个一千万条销售记录的文本文件sales.txt,其主要字段是SellerID(销售员).OrderDate(订单日期) ...
- 集算器访问HTTP数据的代码示例
使用集算器(esProc)可以很方便的从http数据源读取数据进行处理. 本例子中有一个servlet,对外提供json格式的雇员信息查询.Servlet访问数据库的员工表,保存了员工的信息,如下: ...
- 10 行代码,集算器实现写诗机器人
集算器不仅有大数据计算,还有诗和远方.最近看到不少写诗机器人的新闻,于是尝试用集算器简单地实现一个.这个实现真的很简单,简单到只有10几行代码,请看实现步骤: 1.下载字典和诗词 从网上找一个用于分词 ...
最新文章
- 中山大学提出SimAM:无参Attention!助力分类/检测/分割涨点!
- BBScan:信息泄漏批量扫描脚本
- Python库大全(涵盖了Python应用的方方面面),建议收藏留用!
- OpenShift Security (2) - 安装 Red Hat Advanced Cluster Security(RHACS)
- struct 和typedef struct的区别
- 重磅!李航《统计学习方法》最新资源,笔记、Python 代码一应俱全!
- 今天,启动MySQL服务器失败,
- Hadoop简单安装配置
- 通用PHM集成开发环境PIDE
- 在virtualbox安装xp系统及安装oracle
- def demo什么意思python_你知道Python的所有入门级知识吗?,这些,都,会,了
- 游戏引擎平面折线和直线路径跟随算法
- CodeWarrior IDE烧写介绍
- 华尔街不是中国的机会
- 龙尚3G模块在arm板上的应用
- c语言等级分制度的作用,使用C语言怎么对学生的成绩等级进行划分
- pdcp层的作用_LTE系统中PDCP子层功能研究
- Java分布式跟踪系统Zipkin(五):Brave源码分析-Brave和SpringMVC整合
- JS判断手机是否是iOS或者Android
- 中国慕课c语言入门视频,程序设计入门——C语言
热门文章
- 实体类在set字段时报空指针异常
- 前端后端分离,怎么解决SEO优化的问题呢?
- linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
- .NET Core,.NET Framework和Xamarin有什么区别?
- UITableView单元格选择颜色?
- 如何检查字符串“ StartsWith”是否为另一个字符串?
- 如何计算列表项的出现?
- 微软Windows 11正式发布!(附安装教程)
- 仿制波形驱动机器人- SAW
- JSP 九大内置对象及作用域(源码刨析,建议收藏)