结构化文本是很常见的文件格式,对结构化文本的计算也是很常见的需求。在实现这种计算时,一种很容易想到的办法是将文件导入数据库后再计算,但这会消耗大量时间以及昂贵的数据库资源,而且有的场合下并没有合适的数据库可用。这样一来,我们就会有一个自然的想法,如果能够直接计算就会方便多了。可惜的是,一般高级语言都没有提供针对结构化文本的基本运算类库,而想要通过硬编码完成这些运算又非常繁琐,不仅代码复杂,可维护性还很差。

作为专业的结构化数据计算类库,集算器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”字段改为文本型_结构化文本计算示例(一)相关推荐

  1. 按一行一行的方法将一个文本文件复制到另一个文件中_大文件上的结构化数据计算示例...

    [摘要] 本文分析大文件计算的实现原理,如过滤.聚合计算.添加计算列.排序.分组聚合.topN 等,以及利用并行计算来提高计算速度,并用 esProc SPL 举例说明如何用简洁的脚本实现大文件计算. ...

  2. python文本结构化处理_在Python中标记非结构化文本数据

    python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...

  3. 文本数据可视化_非结构化文本数据的分析和可视化

    文本数据可视化 Stuck behind the paywall? Read this article with my friend link here. 卡在收费墙后面? 在这里与我的朋友链接阅读本 ...

  4. st计算机编程语言,ST(结构化文本语言(ST))_百度百科

    ST (结构化文本语言(ST)) 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 结构化文本/结构式文件编程语言(英语:Structured ...

  5. MySQL中通过结构化文本倒腾数据

    拼接为sql语句 使用mysql dump可以对表或者其它对象dump出来,可以以文本或者sql语句的形式,如果针对一张表的结果集还好说,甚至还可以使用where选项,但如果是多表关联,就不能把整个结 ...

  6. Python小案例(一)非结构化文本数据处理

    Python小案例(一)非结构化文本数据处理 日常业务需求中,仅凭SQL一招鲜是没法吃遍天的,这个时候就需要更为强大的Python进行支持了.这个系列主要分享一些Python小案例,都是根据笔者日常工 ...

  7. 结构化文本计算示例(一)

    结构化文本是很常见的文件格式,对结构化文本的计算也是很常见的需求.在实现这种计算时,一种很容易想到的办法是将文件导入数据库后再计算,但这会消耗大量时间以及昂贵的数据库资源,而且有的场合下并没有合适的数 ...

  8. 使用爬虫爬取两种数据:结构化/非结构化文本

    一.非结构化文本的爬取 微博上有一篇关于"#学校里的男生有多温柔#"的话题,点进去一看感觉评论很真实,于是想把评论给爬下来看一看,并生成词云.刚开始思路是通过网页端微博爬取,通过开 ...

  9. Rockwell 罗克韦尔AB Logix 5000控制器 结构化文本语言(ST) 梯形图(LD)顺序功能图(SFC)功能块图(FBD) IEC 61131-3 手册

    Logix 5000 Controllers IEC 61131-3 Compliance 1756 ControlLogix, 1756 GuardLogix, 1769 CompactLogix, ...

最新文章

  1. C++/C++11中用于定义类型别名的两种方法:typedef和using
  2. 介绍Zabbix的两种监控模式(主动模式和被动模式)
  3. FPGA之道(52)状态机的概念
  4. [SSH] Eclipse+Struts+Hibernate的简单应用
  5. 执行多条SQL语句,执行数据库事务(可传入Sql参数)
  6. Tensorflow实例:(卷积神经网络)LeNet-5模型
  7. Win10上rabbitmq 安装
  8. (一)导学(前端框架面试-聚焦Vue/React/Webpack)
  9. 计算机网络第四章总结
  10. [网络安全自学篇] 九十四.《Windows黑客编程技术详解》之提权技术(令牌权限提升和Bypass UAC)
  11. R语言:关于我国各地区消费水平的聚类分析
  12. c语言的编译器手机版,C语言编译器下载_C语言编译器APP手机最新版安装 - 风云下载...
  13. 如何快速播放CSF视频文件的办法
  14. 中国各地高考难度地图:最难的省份不出所料!
  15. 【ROS实践入门(九)ROS编译ORB-SLAM2运行】
  16. 利用python做薪酬管理_HRD告诉你,6个薪酬体系策略做好薪酬管理
  17. 机器学习如何驱动业务实践?你想知道的都在这!
  18. CSS布局的三种方式
  19. 名风新浪博客评论软件-自动评论推广
  20. 【Scrapy框架实战】爬取网易严选-苹果12手机热评

热门文章

  1. ssl 接收到一个超出最大准许长度的记录_我所经历的一次Dubbo服务雪崩,这是一个漫长的故事...
  2. Udacity机器人软件工程师课程笔记(二十二) - 物体识别 - 色彩直方图,支持向量机SVM
  3. ATS上的hosting.config和volume.config文件解读
  4. 学习RPG Maker MZ开发创建并发布PC和移动端游戏
  5. 设计模式 之美 --- 初篇
  6. Tarjan无向图连通性
  7. BZOJ4568: [Scoi2016]幸运数字(线性基 倍增)
  8. JZOJ 5461 购物 —— 贪心
  9. 怎样对拍、如何对拍、对拍模板
  10. Linux 服务器上快速配置阿里巴巴 OPSX NTP服务