【摘要】
本文介绍小文件与大文件在进行数据去重时的几种处理办法,比如按整行或关键列去除重复数据或留下重复数据,并用 esProc SPL 举例实现。请点击文件数据去重示例了解详情
在数据处理业务中,有时需要清除文件中的重复数据或只留下重复数据,本文将从小文件、大文件两方面介绍整行去重、关键列去重的几种处理办法,并提供用 esProc SPL 编写的代码示例。esProc 是专业的数据计算引擎,SPL 中有一套完善的集合运算领域的函数库,很适合处理文件去重,写出的代码非常简洁。
1. 小文件
1.1 整行去重
有一个文本文件,其每一行是一个字符串,要将文件中的重复行只保留一行。处理此问题可以把文件的每一行读成一个字符串,组成一个集合,然后通过集合去重运算得出结果。
示例:报名绘画兴趣班的同学学号姓名记录在paint.txt中,可能有些同学报了多次,请删除文件中重复的报名后保存在paint1.txt中。原文件部分数据如下所示
20121102-Joan
20121107-Jack
20121113-Mike
20121107-Jack
esProc SPL脚本如下:
A | 注释 | |
1 | =file("e:/txt/paint.txt").read@n() | 读出paint.txt的每一行组成集合 |
2 | =A1.id() | 删除A1集合中重复的成员 |
3 | =file("e:/txt/paint1.txt").write(A2) | 将删除重复行后的A2写入文件paint1.txt中 |
1.2 关键列比较
一个文件,有多列数据,第一行是列名,第二行开始是数据记录,要对文件中关键列的内容进行比较