前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power Query中批量处理操作(4)

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

作者头像
逍遥之
发布2020-03-23 17:43:35
6120
发布2020-03-23 17:43:35
举报
文章被收录于专栏:数据技巧数据技巧

这篇依旧是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}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档