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