横向拼接列不相同的表

横向拼接列不相同的表,等值连接,用join函数

举例

1【数据都能对上】

有三个 Excel 文件“emp.xlsx”,分别是数学、体育、英语成绩单,部分数据如下所示:

现在需要把三门学科的成绩横向拼接到一起,结果如下:

编写 SPL 脚本:


A

1

=["math","PE","english"].(file(~/".xlsx").xlsimport@t())

2

=join(A1(1):math,id;A1(2):PE,id;A1(3):english,id)

3

=A2.new(math.id,math.name,math.math,PE.PE,english.english)

4

=file("result.xls").xlsexport@t(A3)

A1  分别从 Excel 中读取数学、体育、英语的学生成绩数据

A2  按 id 关联

A3  选出 id、name、math、PE、english 列

A4  结果导出至 result.xlsx

 

2【数据对不上】

有三个 Excel 文件“emp.xlsx”,分别是数学、体育、英语成绩单,其中数据不全,math 中少了 id 为 3 的学生成绩,PE 中少了 id 为 2 的学生成绩,english 中少了 id 为 1 的学生成绩,部分数据如下所示:

现在需要把三门学科的成绩横向拼接到一起,结果如下:

编写 SPL 脚本:


A

1

=["math","PE","english"].(file(~/".xlsx").xlsimport@t())

2

=join@f(A1(1):math,id;A1(2):PE,id;A1(3):english,id)

3

=A2.new([math.id,PE.id,english.id].ifn():id,[math.name,PE.name,english.name].ifn():name,math.math,PE.PE,english.english)

4

=file("result.xls").xlsexport@t(A3)

A1  分别从 Excel 中读取数学、体育、英语的学生成绩数据

A2  按 id 关联,join 用 @f 选项,关联结果如下:

若不使用 @f,则会丢失数据,如下:

A3  选出 id、name、math、PE、english 列,选 id 和 name 时,因为缺值,需要用 A.ifn 函数确保选出数据

A4  结果导出至 result.xlsx