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 |
… | … |