6.4 对齐分组:每组最多保留一条记录

 

在分组时经常会要求结果集必须按基准集合的次序出现,这种对齐分组在日常统计中是很常见的。比如按北上广深的顺序,统计某公司在这些城市的总销售额;按指定的部门顺序,查询各部门的平均工资等等。
这种分组我们称为对齐分组。对齐分组可能会有空组,也可能有成员未分配到任何一个组中。
按基准表中指定字段的顺序,将数据排序,每组保留最多一个匹配成员。适用于我们希望按照指定顺序查看或者使用数据的情况。

根据某年的中国城市 GDP 表,按照北上广深的顺序查询这些一线城市的 GDP 和人口。部分数据如下:

ID CITY GDP POPULATION
1 Shanghai 32679 2418
2 Beijing 30320 2171
3 Shenzhen 24691 1253
4 Guangzhou 23000 1450
5 Chongqing 20363 3372

在 SPL 中函数 A.align() 用于对齐分组,默认每组保留最多一个匹配成员。

脚本:

A
1 =T(“CityGDP.txt”)
2 [“Beijing”,“Shanghai”,“Guangzhou”,“Shenzhen”]
3 =A1.align(A2,CITY)
4 =A3.new(CITY,GDP,POPULATION)

A1:查询城市 GDP 表。
A2:定义城市序列。
A3:使用函数 A.align(),将城市 GDP 表按照指定的城市序列排序,每组保留最多一个匹配成员。
A4:创建以城市、GDP、人口为字段的结果表。

运行结果:

CITY GDP POPULATION
Beijing 30320 2171
Shanghai 32679 2418
Guangzhou 23000 1450
Shenzhen 24691 1253