esProc SPL 在结构化文本文件上的常规运算
esProc SPL在结构化文本文件上的常规运算
结构化文本文件是指以tab分隔的TXT文件或是逗号分隔的csv文件,这类文件可以看成是数据表。使用esProc SPL能够很方便地对这类文件进行常见的SQL式运算。
这里假定文件第一行是字段标题。
A |
B |
|
1 |
=T("scores.txt") |
|
2 |
=A1.select(CLASS==2) |
// filter |
3 |
=A1.avg(Chinese) |
|
4 |
=A1.max(Math) |
|
5 |
=A1.sum(English) |
|
6 |
=A1.derive(English+Chinese+Math:total_score) |
// derive a total_score column |
7 |
=A1.derive(if(Chinese>=90:"A",Chinese>=80:"B",Chinese>=60:"C";"D"):Chinese_evaluation) |
// evaluate Chinese score |
8 |
=A1.sort(English) |
|
9 |
=A1.sort(CLASS,-Math) |
|
10 |
=A1.groups(CLASS;min(English),max(Chinese),avg(Math)) |
|
11 |
=A1.groups(CLASS;avg(English):avg_En).select(avg_En<85) |
|
12 |
=A1.top(-3;English) |
// Top 3 high English students |
13 |
=A1.groups(CLASS;top(3,English)) |
// Top 3 low English value in CLASS |
14 |
=A1.id(CLASS) |
// distinct CLASS |
15 |
=A1.icount(CLASS) |
// count distinct CLASS |
16 |
=A1.groups(CLASS;icount(English)) |
// count distinct English every CLASS |
17 |
||
18 |
=T("sales.csv") |
|
19 |
=T("product.csv").keys(ID) |
// ID as key |
20 |
=A18.switch(ProductID,A19:ID) |
// ProductID join ID |
21 |
=A20.derive(Quantity*ProductID.Price:amount) |
|
22 |
||
23 |
=T("sales.csv") |
|
24 |
=A23.join(ProductID,A19:ID,Name,Price) |
// import Name, Price join on ProductID=ID |
25 |
=A24.derive(Quantity*Price:amount) |
https://try.esproc.com/splx?2Xx
A1 读学生成绩表scores.txt数据为序表,文件中第一行是列名,第二行开始是数据,如下图所示。
A2 选出班级为2的数据记录
A3 计算语文平均分
A4 计算数学最高分
A5 计算英语总分
A6 在A1中新增一列total_score,其值为英语、语文、数学3列之和
A7 在A1中新增一列Chinese_evaluation,当语文成绩在90以上时评级为A,80以上时评级为B,60以上时评级为C,否则评级为D。
A8 按英语成绩升序排列
A9 先按班级号升序排列,班级内再按数学成绩降序排列
A10 按班级分组,计算各班英语最低分、语文最高分、数学平均分
A11 按班级分组,计算各班英语平均分,选出平均分低于85的班级
A12 按英语降序排列后,取出前3个英语成绩最高的同学成绩记录
A13 按班级分组,各班英语升序排列后,取出前3个最低的英语成绩去重和去重计数
A14 查出所有不重复的班级编号
A15 查出所有不重复的班级编号的个数
A16 按班级分组,查出各班所有不重复英语成绩的个数
A18 读销售数据表sales.csv为序表
A19 读产品数据表product.csv为序表,并设ID为主键
两表结构如下:
A20 用switch函数将A18中ProductID与A19中的ID进行关联(ID为主键时也可省略不写),此时ProductID列转换成了指向与它对应的产品记录。如果从A20中取出部分数据,将如下图所示
A21 A20中新增一列amount,其值为销售数量Quantity与产品价格Price的积,表达式ProductID.Price表示ProductID列指向的记录的Price列值
A23 重读销售数据表sales.csv为序表
A24 用join函数将A23中ProductID与A19中的ID进行关联(ID为主键时也可省略不写),同时引入A19中Name、Price列数据。如果取出A24中部分数据,将如下图所示
A25 A24中新增一列amount,其值为销售数量Quantity与产品价格Price的积
英文版