Power Query 实战案例第 5.5 期 List.Accumulate 的冰山一角

关于List.Accumulate基础讲解请参照PQfans文章
案例1:
先来来一个热身题,计算每个水果购入到库存为0的累计天数
以苹果为例,2/6购入500,到5/18卖出500,此时库存为0,那么相隔天数就是5/18-2/6为101天,再接下来6/20买入600在7/11卖出300又在8/5买入100然后在8/10卖出400此时就是8/10-6/20那么就是相隔51天,最终需要将天数汇总101+51=152天
file
先根据明细列分组
file
然后使用List.Accumulate获取累计天数
file
是不是很简单呢?٩(๑>◡<๑)۶
接下来说明一下:
第一步先将表转换成Record
List.Accumulate第二参数为一个List:
里面第一个List用来盛放第一次购入到库存为0的经过天数
第二List用来盛放类型为购入的信息
第三参数为动态的库存数量
思路也就是:第一个if判断当类型为购入时则在第三参数基础上面增加对应购入数量,并且将y放入x第二参数里面。
如果不是就再判断当前库存减去卖出数量是否小于1,小于1则将x第二和第三参数重置,并且在x第一参数放入y的日期减去x第二参数第一个值的日期再使用Duration.Days提取的天数,如果大于1则直接在x第三参数的库存数量上面减去卖出数量
最后深化出List.Accumulate第一个值,使用List.Sum相加即可
热身之后看第二个热脑题:
file
循环判断,当值为日期是时候与下一个值合并为一个List,否则一个值一个List,B列为效果
file
这个题比较好理解,List.Accumulate第二参数为List
第一个List盛放结果,第二个参数盛放类型非datetime的值
思路是:首先判断值类型是否为数字,不是数字就将值盛放进x第二参数,如果是则将x第二参数与y连接成为一个List,再放入x第一参数,最后深化即可
浑身发热就该洗洗睡了
END
好像少了点什么?
file

Ntt.Docomo