使用区间范围倒查关联表
举例
有 Excel 文件 Book1.xlsx,数据如下所示:
id | start | end | val |
1001 | 1 | 54 | |
1001 | 55 | 100 | |
1001 | 101 | 149 | |
1001 | 150 | 200 | |
1002 | 1 | 10 | |
1002 | 11 | 24 | |
1003 | 1 | 2 | |
1003 | 3 | 6 | |
1003 | 7 | 8 | |
1003 | 9 | 21 | |
1003 | 22 | 30 |
有 Excel 文件 Book2.xlsx,数据如下所示:
id | num | val |
1001 | 5 | 2 |
1001 | 77 | 5 |
1002 | 9 | 1 |
1003 | 11 | 4 |
现在要计算 Book1.xlsx 中的 val 列,要求是:
1.Book2的 id 列跟 Book1 的 id 列相等。
2.满足条件 1 的情况下,判断 Book2 的 num 是否属于 Book1 的 start 至 end 区间值
3.上面两者同时满足则 Book1 的 val 为 Book2 对应的 val,结果如下:
id | start | end | val |
1001 | 1 | 54 | 2 |
1001 | 55 | 100 | 5 |
1001 | 101 | 149 | |
1001 | 150 | 200 | |
1002 | 1 | 10 | 1 |
1002 | 11 | 24 | |
1003 | 1 | 2 | |
1003 | 3 | 6 | |
1003 | 7 | 8 | |
1003 | 9 | 21 | 4 |
1003 | 22 | 30 |
编写 SPL 脚本:
A | |
1 | =file("Book1.xlsx").xlsimport@t() |
2 | =file("Book2.xlsx").xlsimport@t() |
3 | =A1.run(val=A2.select@1(id==A1.id && num>=A1.start && num <=A1.end).val) |
4 | =file("result.xlsx").xlsexport@t(A1) |
A1 读取 excel 文件内容
A2 读取 excel 文件内容
A3 判断每条 Book1 的数据是否满足要求,若满足则将 Book2 的 val 给 Book1
A4 结果导出至 result.xlsx
英文版