3.30 两个大数据表归并法计算合集

 

相同的大数据表进行归并统计。
数据库 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 OrderDate”)
2 =connect(“db2”).cursor@x(“select * from Sales where year(OrderDate)=2014 order by OrderDate”)
3 =[A1,A2].mergex(OrderDate)
4 =A3.groups@o(month(OrderDate):Month; count(~):Count)

A1 从 db1 中读取销售表,按订单日期排序
A2 从 db2 中读取销售表,按订单日期排序
A3 使用 mergex 函数将游标按订单日期归并法合并
A4 使用 groups 函数分组汇总统计每个月的销售数量。使用了 @o 选项,月份发生变化时分到新组

运行结果:

Month Count
1 33
2 29