字符串去重_文件数据去重示例

【摘要】
本文介绍小文件与大文件在进行数据去重时的几种处理办法,比如按整行或关键列去除重复数据或留下重复数据,并用 esProc SPL 举例实现。请点击文件数据去重示例了解详情

在数据处理业务中,有时需要清除文件中的重复数据或只留下重复数据,本文将从小文件、大文件两方面介绍整行去重、关键列去重的几种处理办法,并提供用 esProc SPL 编写的代码示例。esProc 是专业的数据计算引擎,SPL 中有一套完善的集合运算领域的函数库,很适合处理文件去重,写出的代码非常简洁。

1. 小文件

1.1 整行去重

有一个文本文件,其每一行是一个字符串,要将文件中的重复行只保留一行。处理此问题可以把文件的每一行读成一个字符串,组成一个集合,然后通过集合去重运算得出结果。

示例:报名绘画兴趣班的同学学号姓名记录在 paint.txt 中,可能有些同学报了多次,请删除文件中重复的报名后保存在 paint1.txt 中。原文件部分数据如下所示
20121102-Joan
20121107-Jack
20121113-Mike
20121107-Jack

esProc SPL 脚本如下:

4b75a2affada84482005ebef0298ace5.png

1.2 关键列比较

一个文件,有多列数据,第一行是列名,第二行开始是数据记录,要对文件中关键列的内容进行比较,对关键列内容重复的行进行删除或只保留重复的行。

现有 2018 年的销售订单表 order_2018.xlsx,部分数据如下所示:

8352f6f20fd6ecfe42bc2e83c0319894.png

1.2.1. 去除重复

示例 1:请求出 2018 年购买产品的所有不同的客户 Id,保存在文件 2018c.xlsx 中。

esProc SPL 脚本如下:

515b3c00a57775e72b807fe8ada28382.png

示例 2:请求出 2018 年各位客户购买了哪些不同产品,将 CustomerId 和 ProductId 保存在文件 2018c_p.xlsx 中。

esProc SPL 脚本如下:

062cec0d6ec3218ef36161630148c3b0.png

1.2.2. 只保留重复

示例:请求出 2018 年回头客 (即多次购买同种产品的客户) 的订单情况,将结果保存在文件 2018c_rebuy.xlsx 中。

esProc SPL 脚本如下:

a32844d5407924ca055abd9e2f4fde96.png

2. 大文件

大文件数据不能一次性全部装进内存,不能象小文件数据那样全部读出来再进行重复性比较,需要分批读出数据去比较。esProc SPL 提供了游标来处理大文件运算,使大文件去重运算也变得十分方便。

2.1 整行去重

有大文本文件,其每一行是一个字符串,要将文件中的重复行只保留一行。处理此问题要把文件的每一行读成一个字符串,成为游标中的一条记录,然后通过游标的去重运算得出结果。

示例:现有全国房产产权人员登记表大文件 all.txt,里面记录产权人的身份证及姓名,部分数据如下所示:
510121198802213364-Joan
110113199203259852-Jack
201264197206271113-Mike

由于有些人员在多个州拥有房产,所以文件中会有重复的登记,请将重复的登记只保留一个,将结果保存在 all2.txt 中。esProc SPL 脚本如下:

16e22acfbc1cb53ad5dd04b747e3b177.png

2.2 关键列比对

本节仍用销售订单表为例,是所有年份的合并销售订单表 orders.xlsx,是个大文件。

2.2.1. 去除重复

示例 1:请找出购买产品的所有不同的客户 Id,保存在文件 customers.xlsx 中。

esProc SPL 脚本如下:

e50c66f4090148892aae079793889874.png

示例 2:请找出各位客户购买了哪些不同产品,将 CustomerId 和 ProductId 保存在文件 c_p.xlsx 中。

esProc SPL 脚本如下:

06097bf9ff8441bea6a7b3b413187516.png

2.2.2. 只保留重复

示例:请找出回头客 (即多次购买同种产品的客户) 的订单情况,将结果保存在文件 c_rebuy.xlsx 中。

esProc SPL 脚本如下:

83209a7cfe277bdd1446a8cdd791ee61.png

《SPL CookBook》中还有更多相关计算示例。

789fddd4eb205b21eee08749398f8363.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arm ubuntu 编译boost_使用yocto工具编译qt5.9.6总结

运行平台:OKMX6DL-C编译平台:Ubuntu 14.04.6 LTS编译工具:arm-poky-linux-gnueabi-gcc(gcc version 5.3.0 (GCC) )qt源码:qt-everywhere-opensource-src-5.9.6.tar.xz参考:嵌入式开发之Qt-5.9.6…

Linux crond命令使用介绍

目录前言一、crond简介系统任务调度用户任务调度二、crond服务三、crontab命令详解1.命令格式2.命令功能3.命令参数4.常用方法1). 创建一个新的crontab文件2). 列出crontab文件3). 编辑crontab文件4). 删除crontab文件5). 恢复丢失…

Android App屏幕旋转要点

文章目录前言屏幕旋转“预热”android:screenOrientationandroid:configChangesAcitvity onConfigurationChanged(newConfig: Configuration?)代码控制方向跟随系统重力感应总结前言 关于app横竖全屏切换,大多数属于音视频播放类app,电子书、文档类的应…

HTML静态页面获取url参数和UserAgent

目录前言原因解决1、静态页面获取url的参数2、取useragent的值3、测试页面前言 接技术支持小伙伴信:有用户反馈app在华为设备上下载不了,以为是服务器覆盖的范围不够或服务器挂了,直到另一个客服同事发来一个录屏,基本知道原因&a…

Android手机或平板设置浏览器的UserAgent

目录前言修改UserAgent实操华为手机自带浏览器Chrome(谷歌浏览器)QQ浏览器UC浏览器360浏览器前言 移动互联网盛行的当下,网页在电脑端和移动设备(包括手机,平板以及一些基于Android系统定制的设备)的适配主…

android jni fork()子进程不运行_Android高级面试谈谈Zygote的理解

Zygoto的作用Zygoto的作用有两个:1. 启动SystemServer2. 孵化应用进程SystemServer也是通过Zygoto来启动的,因为SystemServer需要Zygoto初始化好的一些系统资源,包括常用的类、JNI函数、共享库等等,这些资源直接从Zygoto继承过来对…

送给女朋友的情话

风拂鹊桥霓裳起 与卿漫话风雨里 初识 那一年端午 带着无比喜悦与期待 搭上去福州的火车 那一年端午 从福州到泉州 再到柴塔 连地名都好有神秘的感觉 迷糊的眼镜和疲倦的神情,刚好匹配得上 从此有了我们的传说 到了2022的七月七,还是一如既往 小特效 图…

lazada发货_Lazada发货用什么物流?费用要多少?

有买家到Lazada店铺下单之后,卖家就要安排订单发货了。Lazada发货的管控也是比较严格的,各位卖家要及时发货。小编也遇到不少新手卖家的咨询,问Lazada发货方式有哪些?以及发货流程是怎样的?下面针对这些问题&#xff0…

导入表格只有一行 帆软_万万没想到!把x个表格合合合合成一份,10分钟就搞定...

正值年中,老板交代把上半年各个地区提交的数据表格做个汇总。怎么办?一个地区一张表打开华南区的表,复制】-打开汇总表-【粘贴】再打开华北区的表【复制】-打开汇总表-【粘贴】……类似的工作任务还真不少各个单位上交的报名表各部门的生产计…

vim插件自动补齐_给VIM添加REPL

REPL: 读取-求值-输出”循环(英语:Read-Eval-Print Loop,简称REPL)是一个简单的,交互式的编程环境。python作为一个动态语言,REPL在开发过程中起到了很大的作用。可是一直以来用vim写python没有一个很好的&…

Linux ping 详细介绍(win也适用)

多数情况下,能否访问某台电脑或服务器,很自然的使用ping xxx.xxx.xxx.xxx,这是最简单的ping形式,同时看到ping几个包之后就停止(windows)了,linux 会一直ping下去,直到按ctrlc或其他组合键。在windows平台或linux平台&…

巨一自动化工业机器人_工业机器人和自动化设备连接器

来源:大比特商务网 作者:Ann Thryft随着工业物联网(IIOT)不断扩大,给工厂带来了更多电子设备。 这些设备往往暴露在恶劣环境中,包括灰尘、油、液体和极端温度等。 同时,特别是随着协作机器人装配在工厂生产线上&#x…

pvrect r语言 聚类_R语言常用统计方法包+机器学习包(名称、简介)

上期帮大家盘点了一下R中常用的可视化包,这期将简要盘点一下关于统计分析与机器学习的R包,并通过简要介绍包的特点来帮助读者深入理解可视化包。本文作者为“食物链顶端”学习群中的小伙伴,感谢他们的分享。话不多说我们一起来看看吧&#xf…

rap2检测哪些接口在使用_Apifox for Mac(接口调试管理工具)

Apifox 是一款用于接口文档定义、Mock 数据、接口自动化测试等等方面的工具,它的功能高效好用,接口云端同步,实时更新。成熟的团队/项目权限管理,满足各类企业的需求。有需要的朋友赶快来使用吧!Apifox 软件介绍软件开…

layui根据name获取对象_layui表格行合并;解决侧边固定栏合并

实现效果图:适配分页&#xff1b;全选&#xff1b;后台嵌套数据&#xff1a;获取数据后&#xff1b;渲染前操作&#xff1a;,done:function(res){if(res.data){for(var i 0;i<res.data.length;i){var trObj $([lay-id"table"] .layui-table-box).find([data-ind…

abap al设置单元格可编辑 oo_利用WPS做业务系统的超级编辑器

业务系统中的数据很笼统的分可以分为两大类&#xff0c;一个是结构化的&#xff0c;通常用关系型数据库来存储管理&#xff1b;一个是非结构化的&#xff0c;在这类数据中&#xff0c;可能最多、价值密度最大的就是文档。如何更便捷高效的生成或分析文档&#xff0c;就是业务系…

pyecharts怎么绘制散点图_pyecharts可视化和wx的结合

前言最近在研究 pyecharts 的用法&#xff0c;它是 python 的一个可视化工具&#xff0c;然后就想着结合微信来一起玩不多说&#xff0c;直接看效果&#xff1a;条形图.gif环境配置pip install pyechartspip install snapshot_seleniumpip install echarts-countries-pypkgpip …

jekenis父子结构项目打包_全栈之DevOps系列 - 发布 Python 项目 开源/私有 包

DevOps目前并没有权威的定义&#xff0c;普遍认为&#xff0c;DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理&#xff0c;从而更快、更频繁地交付更稳定的软件。作者以 dukepy 系列项目中 dkimageapp 子项目&#xff08;关于图像处理…

如何计算_振动筛处理能力如何计算呢

振动筛在生活中的应用可谓设计到方方面面&#xff0c;大到煤炭开采筛分。小到果汁饮料&#xff0c;这些都离不开振动筛或者震动筛的身影。下面和道联合机械讲解一下如何计算振动筛的处理量&#xff0c;从而选购好的振动筛。振动筛的处理能力计算公式主要如下&#xff1a;1、处理…

springsession分布式登录被覆盖_拉勾 分布式 学习小结

分布式和集群分布式一定是集群&#xff0c;但是集群不一定是分布式&#xff08;可能是复制的&#xff09;集群是多个实例一起工作&#xff0c;分布式将一个系统拆分之后那就是多个实例分布式应用结构&#xff1a;Hash算法适用于在加密&#xff0c;数据存储和查找方面有hash表&a…