access“idno”字段改为文本型_结构化文本计算示例(一)
结构化文本是很常见的文件格式,对结构化文本的计算也是很常见的需求。在实现这种计算时,一种很容易想到的办法是将文件导入数据库后再计算,但这会消耗大量时间以及昂贵的数据库资源,而且有的场合下并没有合适的数据库可用。这样一来,我们就会有一个自然的想法,如果能够直接计算就会方便多了。可惜的是,一般高级语言都没有提供针对结构化文本的基本运算类库,而想要通过硬编码完成这些运算又非常繁琐,不仅代码复杂,可维护性还很差。
作为专业的结构化数据计算类库,集算器SPL封装了丰富的结构化计算函数,支持集合运算、关联运算、有序运算,因此可轻松实现结构化文本的运算。此外,SPL还可以通过JDBC调用接口向Java应用提供运算结果(可参考【Java 如何调用 SPL 脚本】),极大地方便集成工作。
下面我们就来看一下常见的结构化文本计算案例,以及SPL对应的解法。
维护
增加记录
在sales.txt的第2行插入1条记录。源文件如下:
代码
结果
函数insert插入记录,第1个参数是插入位置,当该参数为0时,表示追加记录。
如果只是向文件追加记录,那么不必读入文件,只需用函数export@a,代码如下:
函数create新建二维表,函数record向二维表追加记录。
另外,可以通过insert@r批量插入记录,代码如下:
为节省篇幅起见,下文都将省略导出文件的代码。
删除记录
删除sales.txt中的第2条记录。代码如下:
函数delete支持批量删除,比如删除第2,3,5,6,7条记录:A1.delete([2,3]|to(5,7))
也可以按条件删除,比如删除Amount小于1000的记录:A1.delete(A1.select(Amount<1000))
修改记录
修改sales.txt的第2条记录,将SellerId改为100,Amount改为1000,代码如下:
也可以批量修改,比如将前10条记录的Amount增加10:
A1.modify(1:10,Amount+10:Amount)
增加列
在sales.txt增加列year,填入订单日期OrerDate中的年份。代码:
结果:
删除列
物理上删除列效率较低,通常用“取出保留列”来代替。比如sales.txt中删除Client、SellerId,相当于保留OrderID、Amount、OrderDate,代码如下:
结果:
修改列
将sales.txt的Amount列增加10%,代码如下:
结果:
注意函数run跟函数modify的区别:修改整列(所有记录的对应字段)需要用run,只修改指定记录的某列(特定字段)用modify。
基本运算
查询
指定时间段,按参数查询sales.txt。代码:
startDate和endDate是输入参数,比如2010-01-01至2010-12-31。结果:
排序
针对sales.txt,按照客户代码(Client)降序排序,按照订单日期(OrderDate)升序排序。
代码:
注意:降序时在字段前面使用英文的减号来表示,即“-”,默认按照升序。
结果:
分组汇总
计算出每个销售员每年的销售额和订单数,即按照销售员分组,对销售额求和,对记录计数。
代码:
函数groups可在分组的同时进行汇总,其中,~表示每组或当前组,count(~)等于count(OrderID)。
结果:
获得唯一值
列出sales.txt中的客户名单,即获取所有Client的唯一值。
代码:
结果:
去除重复
保留sales.txt中每个客户每个销售员的第一条记录。获取唯一值也是一种去重,这里是另外一种通过分组来去除重复的方式。
代码:
通过函数group进行分组(和groups不同,这里可以不汇总),@1表示取每组第1条记录。
结果:
TopN
找到每个销售员销售额最大的3笔订单。
代码:
函数top过滤出TopN,”-”表示逆序,函数conj用于合并结果。
计算结果:
如果只取最大的一笔订单,还可以用maxp函数,不过 maxp直接返回表达式描述的最大记录,因此不用再加符号”-”来描述排序方式。由于分组后的字段t的内容是记录,因此不能用conj(t)来合并,而是需要使用A.(t)方式直接取出t字段。所以取每个销售的最大一笔订单表达式为:=A1.group(SellerId;~.maxp(Amount):t).(t)
access“idno”字段改为文本型_结构化文本计算示例(一)相关推荐
- 按一行一行的方法将一个文本文件复制到另一个文件中_大文件上的结构化数据计算示例...
[摘要] 本文分析大文件计算的实现原理,如过滤.聚合计算.添加计算列.排序.分组聚合.topN 等,以及利用并行计算来提高计算速度,并用 esProc SPL 举例说明如何用简洁的脚本实现大文件计算. ...
- python文本结构化处理_在Python中标记非结构化文本数据
python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...
- 文本数据可视化_非结构化文本数据的分析和可视化
文本数据可视化 Stuck behind the paywall? Read this article with my friend link here. 卡在收费墙后面? 在这里与我的朋友链接阅读本 ...
- st计算机编程语言,ST(结构化文本语言(ST))_百度百科
ST (结构化文本语言(ST)) 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 结构化文本/结构式文件编程语言(英语:Structured ...
- MySQL中通过结构化文本倒腾数据
拼接为sql语句 使用mysql dump可以对表或者其它对象dump出来,可以以文本或者sql语句的形式,如果针对一张表的结果集还好说,甚至还可以使用where选项,但如果是多表关联,就不能把整个结 ...
- Python小案例(一)非结构化文本数据处理
Python小案例(一)非结构化文本数据处理 日常业务需求中,仅凭SQL一招鲜是没法吃遍天的,这个时候就需要更为强大的Python进行支持了.这个系列主要分享一些Python小案例,都是根据笔者日常工 ...
- 结构化文本计算示例(一)
结构化文本是很常见的文件格式,对结构化文本的计算也是很常见的需求.在实现这种计算时,一种很容易想到的办法是将文件导入数据库后再计算,但这会消耗大量时间以及昂贵的数据库资源,而且有的场合下并没有合适的数 ...
- 使用爬虫爬取两种数据:结构化/非结构化文本
一.非结构化文本的爬取 微博上有一篇关于"#学校里的男生有多温柔#"的话题,点进去一看感觉评论很真实,于是想把评论给爬下来看一看,并生成词云.刚开始思路是通过网页端微博爬取,通过开 ...
- Rockwell 罗克韦尔AB Logix 5000控制器 结构化文本语言(ST) 梯形图(LD)顺序功能图(SFC)功能块图(FBD) IEC 61131-3 手册
Logix 5000 Controllers IEC 61131-3 Compliance 1756 ControlLogix, 1756 GuardLogix, 1769 CompactLogix, ...
最新文章
- C++/C++11中用于定义类型别名的两种方法:typedef和using
- 介绍Zabbix的两种监控模式(主动模式和被动模式)
- FPGA之道(52)状态机的概念
- [SSH] Eclipse+Struts+Hibernate的简单应用
- 执行多条SQL语句,执行数据库事务(可传入Sql参数)
- Tensorflow实例:(卷积神经网络)LeNet-5模型
- Win10上rabbitmq 安装
- (一)导学(前端框架面试-聚焦Vue/React/Webpack)
- 计算机网络第四章总结
- [网络安全自学篇] 九十四.《Windows黑客编程技术详解》之提权技术(令牌权限提升和Bypass UAC)
- R语言:关于我国各地区消费水平的聚类分析
- c语言的编译器手机版,C语言编译器下载_C语言编译器APP手机最新版安装 - 风云下载...
- 如何快速播放CSF视频文件的办法
- 中国各地高考难度地图:最难的省份不出所料!
- 【ROS实践入门(九)ROS编译ORB-SLAM2运行】
- 利用python做薪酬管理_HRD告诉你,6个薪酬体系策略做好薪酬管理
- 机器学习如何驱动业务实践?你想知道的都在这!
- CSS布局的三种方式
- 名风新浪博客评论软件-自动评论推广
- 【Scrapy框架实战】爬取网易严选-苹果12手机热评
热门文章
- ssl 接收到一个超出最大准许长度的记录_我所经历的一次Dubbo服务雪崩,这是一个漫长的故事...
- Udacity机器人软件工程师课程笔记(二十二) - 物体识别 - 色彩直方图,支持向量机SVM
- ATS上的hosting.config和volume.config文件解读
- 学习RPG Maker MZ开发创建并发布PC和移动端游戏
- 设计模式 之美 --- 初篇
- Tarjan无向图连通性
- BZOJ4568: [Scoi2016]幸运数字(线性基 倍增)
- JZOJ 5461 购物 —— 贪心
- 怎样对拍、如何对拍、对拍模板
- Linux 服务器上快速配置阿里巴巴 OPSX NTP服务