5.1 简单迭代运算
1. 用迭代函数实现求和 (sum)、累计求和(cum)、最大值(max)、最小值成员(maxp) 计算
2. 计算 10 号销售员的累积销售额
3. 为 10 号销售员的订单从 1 开始编号,并将 ORDERID 替换为该编号
SPL
A | B | |
---|---|---|
1 | [1,10,9,7,1,10,4,9,6,7] | |
2 | =A1.iterate(~~+~,0) | / 求和 |
3 | =A1.iterate@a(~~+~,0) | / 累计求和 |
4 | =A1.iterate(if(~~<~,~,~~),-inf()) | / 最大值 |
5 | =A1.new(#:idx,~:value) | |
6 | =A5.iterate(if (~~==null || ~.value<~~.value,~,~~), null ) | / 最小成员 |
7 | =A5.iterate(if(~~==null || ~.value<~~.value,~,if(~.value==~~.value,~~|~,~~)), null ) | / 最小成员集合 |
8 | =file(“SALES.csv”).import@tc() | |
9 | =A8.select(SELLERID==10) | |
10 | =A9.derive(iterate(~~+AMOUNT,0):CUM_AMOUNT) | / 累积销售额 |
11 | =A9.derive(cum(AMOUNT):CUM_AMOUNT) | / 累积销售额 |
12 | =A10.run(ORDERID=iterate(~~+1,0)) | / 销售员订单编号 |
13 | =A10.run(ORDERID=seq(SELLERID)) | / 销售员订单编号 |
迭代函数 A.iterate(x,a),将针对 A 的每个成员计算 x,在 x 中可以使用 ~ 和 #表示循环中的 A 的当前成员和序号,需要特别说明的是,迭代函数还提供了符号 ~~,用于表示上一轮循环中计算出的 x,开始循环时,~~ 的初始值是参数 a。所有成员循环后,返回最后的结果。
增加 @a 选项后,所有成员都循环后,返回每一轮计算出来的 ~~ 构成的序列,其长度和 A 相同。
A10 是迭代产生,产生 10 号销售员的累积销售额,和 A11 的结果相同。
A12 是迭代执行,效果和 A13 相同。
SQL
SQL 没有提供类似的方法。
Python
Python 没有提供类似的方法。