欢迎光临散文网 会员登陆 & 注册

Excel之PowerQuery 先语法后原理

2023-02-28 09:48 作者:孙兴华zz  | 我要投稿

网友提问:

回答网友问题:

语文:先会写部分文字,再谈写作文。所以小学一年级没有作文课,只有看图说话。

数学:先认识0~9这十个数字,才能进行加减法。

英语:先认识26个字母,再说学单词。

M和DAX两种语言,必先要先懂语法,再谈原理。

有些人学DAX时就是混学,还说什么语法原理不分家,用的时候不分家,学的时候就是先语法后原理。否则学不会是小事,魔怔了。。。张口就是内层、外层、隐形、显形、循环依赖、数据沿袭,让他解释一下,他说不清楚,我用生活中的案例解释清楚了,他又说凡是一句话说不清楚的就是自己还没弄明白。

您现在的疑问是原理,而我在这节课一开始讲的语法您没有认真听。

让我们回到故事开始的地方,2020年9月2日..........

各位观众朋友,您现在看到的是 List.Accumulate 语法部分

语法:要知道这里的x代表什么,y代表什么,当然可以不用x和y,你写成孙悟空、猪八戒也可以。如下图所示

名称完全是自己定义的,所以读什么不重要,我一直把Nikon读成耐克:)

当我们知道了语法,以x和y为例,x是哪个参数,y是哪个参数,接下来进入原理

= List.Accumulate({1,2,3},0,(x,y)=>x+y)

已知:第1参数是个列表,y代表第一参数中的每个值,第1参数中的每个值依次传递给y

           x初始值是0

解:

        第一次:x=0 , y =1 , x+y = 0+1 = 1 , 结果1赋值给x

        第二次:x=1, y=2 ,   x+y=1+2=3  ,  结果3赋值给x

        第三次:x =3, y=3   ,  x+y = 6        结束了,答案是6

如果有人觉得上面说的是废话,那之后的理解就难喽。。。

如果你认为上面说的有用,那下面自己就理解了。

再说网友的问题:

= List.Accumulate(源[销售],{},(x,y)=>x&{List.Sum({List.Last(x),y})})

源[销售]  就是一张表中的某个列,本身就是一个列表,如果你对公式运算规则不理解时,建议简便数据,比如我可以写成

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

意思没变吧?再谈规则

已知:x初始值是一个空列表{}

           y是列表{1,2,3}中的每一个值。(注意,是列表中的每一个值,在这里是数字1、2、3)

           List.Last函数是列表中最后一个值。(不是最大值,是最后一个元素)

           List.Sum函数是对列表求和

解:

     第一次:{ } & {List.Sum({List.Last({}),1})} = {} & {List.Sum({null,1})} ={}&{1}={1}   

结果{1}赋值给x

空列表中最后一个元素还是空(null),null与1组成的列表求和结果就是1

& 两边的数据类型要求是一样的

    第二次:{1} & {List.Sum({List.Last({1}),2})}= {1} & {List.Sum({1,2})} = {1} & {3} = {1,3}

结果{1,3}赋值给x

    第三次:{1,3} & {List.Sum({List.Last({1,3}),3})}={1,3} & {List.Sum({3,3})}  = {1,3} & {6} = {1,3,6}     完成了 这个列表就是最后的结果


PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e

更多教程:https://www.bilibili.com/read/cv10222110

Excel之PowerQuery 先语法后原理的评论 (共 条)

分享到微博请遵守国家法律