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