6.6 对齐分组:不匹配记录放到新组

 

按基准表中指定字段的顺序,将数据分组,不匹配的记录放到新组。适用于不仅关心匹配的成员信息,还要关心其他不匹配记录的场景。

根据员工表,统计 [California, Texas, New York, Florida] 的平均工资,其他州作为“Other”组进行统计。员工表部分数据如下:

ID NAME STATE DEPT SALARY
1 Rebecca California R&D 7000
2 Ashley New York Finance 11000
3 Rachel New Mexico Sales 9000
4 Emily Texas HR 7000
5 Ashley Texas R&D 16000

在 SPL 中函数 A.align() 的选项 @n,用于在对齐分组时将不匹配记录放到新组。
脚本:

A
1 =T(“Employee.csv”)
2 [California,Texas,New York,Florida]
3 =A1.align@an(A2,STATE)
4 =A3.new(if (#>A2.len(),“Other”,STATE):STATE,~.avg(SALARY):AvgSalary)

A1:查询员工表。
A2:创建地区序列。
A3:使用函数 A.align@an() 将员工表按地区对位分组,选项 @a 每组返回所有匹配成员,选项 @n 不匹配成员存放到新组。
A4:统计每组的平均工资,将不匹配的分组(最后一组)命名为“Other”。

运行结果:

STATE AvgSalary
California 7700.0
Texas 7592.59
New York 7677.77
Florida 7145.16
Other 7308.1