多列相关去重
举例
例1
有 Excel 文件 Book1.xlsx,部分数据如下所示:
id |
name |
1001 |
jack |
1002 |
bob |
1002 |
bob |
1003 |
jerry |
1003 |
jerry |
1004 |
alice |
1004 |
|
1004 |
aaa |
1005 |
tom |
1006 |
去除 id 和 name 都重复的数据,若相同 id 存在非空 name,则 name 为空的数据也删除。结果如下:
id |
name |
1001 |
jack |
1002 |
bob |
1003 |
jerry |
1004 |
aaa |
1004 |
alice |
1005 |
tom |
1006 |
编写SPL脚本:
A |
|
1 |
=file("Book1.xlsx").xlsimport@t() |
2 |
=A1.group(id).(~.group@1(name)).(if(~.len()>1,~.select(name),~)).conj() |
3 |
=file("result.xlsx").xlsexport@t(A2) |
A1 读取 excel 文件内容
A2 按 id 分组,组内按 name 去重,去重后,若组内的数据大于两条,再过滤出 name 非空的数据,否则不过滤,合并各组结果
A3 结果导出至 result.xlsx
例2
有 Excel 文件 Book1.xlsx,部分数据如下所示:
Alex |
Eddie |
Ford |
Alex |
Bruce |
Evan |
Alex |
Chris |
Bruce |
Alex |
Evan |
Chris |
Bruce |
Alex |
Evan |
Bruce |
Alice |
Chris |
Bruce |
Ford |
Alex |
Chris |
Evan |
Ford |
Eric |
Alex |
Bruce |
去除相同数据(列序无关),结果如下:
Alex |
Chris |
Bruce |
Eric |
Alex |
Bruce |
Alex |
Bruce |
Evan |
Bruce |
Ford |
Alex |
Alex |
Evan |
Chris |
Alex |
Eddie |
Ford |
Bruce |
Alice |
Chris |
Chris |
Evan |
Ford |
编写SPL脚本:
A |
|
1 |
=file("Book1.xlsx").xlsimport() |
2 |
=A1.group@1(~.sort()) |
3 |
=file("result.xlsx").xlsexport(A2) |
A1 读取 excel 文件内容
A2 每行数据排序,分组去重,取组内第一个数据
A3 结果导出至 result.xlsx
英文已更新