多列相关去重

举例

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