3.31 两个大数据表归并法计算并集
对两个结构相同的大数据表归并统计,两个表中有部分数据重复。
数据库 db1 和 db2 中分别有结构相同的销售记录表 Sales,数据量大无法装载进内存,统计 2014 年每个客户的销售额。
OrderID | Customer | SellerId | OrderDate | Amount |
---|---|---|---|---|
10400 | EASTC | 1 | 2014/01/01 | 3063.0 |
10401 | HANAR | 1 | 2014/01/01 | 3868.6 |
10402 | ERNSH | 8 | 2014/01/02 | 2713.5 |
10403 | ERNSH | 4 | 2014/01/03 | 1005.9 |
10404 | MAGAA | 2 | 2014/01/03 | 1675.0 |
… | … | … | … | … |
脚本:
A | |
---|---|
1 | =connect(“db1”).cursor@x(“select * from Sales where year(OrderDate)=2014 order by OrderID”) |
2 | =connect(“db2”).cursor@x(“select * from Sales where year(OrderDate)=2014 order by OrderID”) |
3 | =[A1,A2].mergex@u(OrderID) |
4 | =A3.groups(Customer; sum(Amount):Amount) |
A1 从 db1 中读取销售表 2014 年的记录,按订单 ID 排序
A2 从 db2 中读取销售表 2014 年的记录,按订单 ID 排序
A3 使用 mergex 函数将游标按订单 ID 归并,使了 @u 选项去掉重复记录
A4 使用 groups 函数分组汇总每个客户的销售额
运行结果:
Customer | Amount |
---|---|
ANATR | 1129.75 |
ANTON | 6452.15 |
… | … |