多列相关去重
举例
例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
英文已更新