使用关联表做区间关联
例1
Excel文件book1.xlsx中,部分数据如下所示:
另一个文件book2.xlsx中有数量区间与价格的对应关系表,如下图所示:
现在要计算book1.xlsx中B列的价格值,计算规则是用数量Quantity在book2.xlsx中查找,若数量大于Quantity1且小于等于Quantity2,则返回此行的价格。
编写SPL脚本:
A |
|
1 |
=T("e:/work/book1.xlsx") |
2 |
=T("e:/work/book2.xlsx") |
3 |
=A1.run(Price=A2.segp@r(Quantity1,A1.Quantity).Price) |
4 |
=T("e:/work/book1.xlsx",A1) |
A1 读出book1.xlsx数据
A2 读出book2.xlsx数据
A3 循环A1每条记录,用segp函数查询Quantity的值位于A2的Quantity1构成的区间的哪个段号,再从A2中取出对应号的记录的价格赋给Price。选项@r表示形成左开右闭的区间,比如数量50应该算成是第1行所在的区间。
A4 把A1中的结果保存到文件book1.xlsx
例2
Excel文件book1.xlsx中有汽车充电数据,部分数据如下所示:
另一个文件book2.xlsx中有充电时段对应的电价,如下图所示:
现在要计算book1.xlsx中Price列的价格,计算规则是用充电开始时间Starttime的小时数在book2.xlsx中查找所处时段的价格。
编写SPL脚本:
A |
|
1 |
=T("e:/work/book1.xlsx") |
2 |
=file("e:/work/book2.xlsx").xlsimport@w() |
3 |
=A1.run(Price=A2(3).to(2,)(A2(1).to(2,).pseg(hour(A1.Starttime)))) |
4 |
=T("e:/work/book1.xlsx",A1) |
A1 读出book1.xlsx数据
A2 读出book2.xlsx数据,选项@w表示读成序列的序列
A3 循环A1每条记录,用A2中第1行第2列开始的Starthour序列形成区间,在此区间查找A1.Starttime中的小时所处的分段号,从A2第3行的Price中取出对应分段号的价格赋给Price。
A4 把A1中的结果保存到文件book1.xlsx
英文版
英文已更新