多列相关去重

举例

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