(一) 含义
在Power Query中@是表示范围运算符,通常在使用递归时运用其自身。
(二) 一般使用
把函数自身参数运用于其他函数。
例1:
(x) =>@Number.From(x) 10
解释:定义一个调用自身参数并转换成数字格式并 10的函数。这种写法实际上和不指定是一样的,因为参数本身未进行变化参与到后期的运算。
例2:
(x)=>@Text.From(x)&"有限公司"
解释:调用自身参数后进行后缀添加上有限公司。
(三) 循环使用
例1:累加求和
fx=(x)=>if x<=1 then x else @fx(x-1) x
解释:因为涉及到循环,需要制定一个循环结束条件。此函数为正数累加求和。
从1累计到5进行求和。
次数 | X初始 | x-1 | X终值 |
---|---|---|---|
1 | 5 | 4 | 9 |
2 | 4 | 3 | 12 |
3 | 3 | 2 | 14 |
4 | 2 | 1 | 15 |
例2:累计乘积
如果一个股票目前的市场价格是10元,如果连续5个涨停能达到多少价格呢?
代码语言:javascript复制fx = (price, day)=>[现价=1.1*price,
终值=if day=0 then price
else @fx(现值,day-1)]
[终值]
解释:这里我们有2个变量参数在进行运算,一个是价格,一个是涨停天数。对于多变量的,我们可以通过Record格式来进行记录。同时if的then是作为结束判断语句,else是作为循环运行的计算公式。
次数 | Price初始 | Day初始 | 现价 | Day终值 | 终值 |
---|---|---|---|---|---|
1 | 10 | 5 | 10*1.1=11 | 4 | 11 |
2 | 11 | 4 | 11*1.1=12.1 | 3 | 12.1 |
3 | 12.1 | 3 | 12.1*1.1=13.31 | 2 | 13.31 |
4 | 13.31 | 2 | 13.31*1.1=14.641 | 1 | 14.641 |
5 | 14.641 | 1 | 14.641*1.1=16.1051 | 0 | 16.1051 |