Power Query中批量处理操作(4)

这篇依旧是List.Accumulate的函数应用详解。但是第2参数是作为列表格式使用。

List.Accumulate({1..3},{},(x,y)=>x&{y})

={}&{1}={1}

={1}&{2}={1,2}

={1,2}&{3}

={1,2,3}

解释:第2参数既然是any,不仅可以代表空文本,也可以是空列表。


List.Accumulate({1..5},{},(x,y)=>

ifNumber.Mod(y,2)=1 then x&{y} else x)={1,3,5}

解释:功能是把奇数的组合成一个列表。其中涉及到一个Number.Mod取余函数。红色代表y,蓝色代表x。

第一步,做判断Number.Mod(1,2)=1,结果是True,所以是{}&{1},也就是{1}

第二步,做判断Number.Mod(2,2)=0<>1,结果是False,所以是x,也就是上一步的计算结果{1}

第三步,做判断Number.Mod(3,2)=1,结果是True,所以是{1}&{3}={1,3}

第四步,做判断Number.Mod(4,2)=0<>1,结果是False,所以是x,也就是上一步的计算结果{1,3}

第五步,做判断Number.Mod(5,2)=1,结果是True,所以是{1,3}&{5}={1,3,5}


List.Accumulate({1..10},{{},{}},(x,y)=> if Number.Mod(y,2)=0 then{x{0}&{y},x{1}} else {x{0},x{1}&{y}})

={{2,4,6,8,10},{1,3,5,7,9}}

解释:根据条件分组归类并组合成列表,把奇数和偶数分别归类成2组列表。

第一步,做判断Number.Mod(1,2)=1,计算结果为{x{0},x{1}&{y}}={{},{}&{1}}={{},{1}}

第二步,做判断Number.Mod(2,2)=0,计算结果为{x{0}&{y},x{1}}={{}&{2},{1}}={{2},{1}}

第三步,做判断Number.Mod(3,2)=1,计算结果为{x{0},x{1}&{y}}={{2},{1}&{3}}={{2},{1,3}}

第四步,做判断Number.Mod(4,2)=0,计算结果为{x{0}&{y},x{1}}={{2}&{4},{1,3}}={{2,4},{1,3}}

以此类推最终的结果就是生成2个类别,第一个列表为偶数{2,4,6,8,10},第二个列表为奇数{1,3,5,7,9}。


List.Accumulate({100,50,10},{{},255},(x,y)=>

{x{0}&{Number.IntegerDivide(x{1},y)},

Number.Mod(x{1},y)})

={{2,1,0},{5}}

解释:这里面涉及到2个函数Number.IntegerDivide(取整)和Number.Mod(取余)。255从对指定列表的数从大到小进行整除,得到一个取整的列表以及最后一个余数。通常用于积分兑换,零钱兑换等实际应用案例。

第一步,{{}& Number.IntegerDivide(255,100)}, Number.Mod(255,100)}={{}&{2},55}={{2},55}

第二步,{{}&{Number.IntegerDivide(55,50)}, Number.Mod(55,50)}={{2}&{1},5}={{2,1},5}

第三步,{{}&{Number.IntegerDivide(5,10)}, Number.Mod(5,10)}={{2,1}&{0},5}={{2,1,0},5}

如果有用,动动你的小手进行转发。

你可能感兴趣的:(Power Query中批量处理操作(4))