Power Query日期判断if语句报Token RightParen expected错误如何解决
问题根因
- 语法错误:Power Query M语言里
if是条件语句关键字,不是函数,你在if后面多写了一个左括号,整个表达式末尾只有一个右括号,括号不匹配,解析器运行到then后的Date位置时就会抛出「Token RightParen expected」报错。 - 逻辑偏差:
Date.DayOfWeek默认以周日为一周第一天,返回值规则是周日=0、周一=1、周二=2……周六=6,你原代码里判断=0实际匹配的是周日,和你要判断「周一」的需求不符。
修正代码
直接修正语法、对齐需求的写法如下:
if Date.DayOfWeek(DateTime.FixedLocalNow(), Day.Monday) = 0 then Date.AddDays(Date.From(DateTime.FixedLocalNow()), -3) else Date.AddDays(Date.From(DateTime.FixedLocalNow()), -1)
给
Date.DayOfWeek传入第二个参数Day.Monday,指定周一为一周第一天,此时周一的返回值固定为0,不会出现星期匹配错位的问题。
如果要简化代码、避免重复调用取当前时间的逻辑,可以用let块封装:
let CurrentDate = Date.From(DateTime.FixedLocalNow()), CurrentWeekday = Date.DayOfWeek(CurrentDate, Day.Monday) in if CurrentWeekday = 0 then Date.AddDays(CurrentDate, -3) else Date.AddDays(CurrentDate, -1)
补充说明
M语言if表达式的标准结构是if <判断条件> then <条件成立返回值> else <条件不成立返回值>,不需要给整个判断条件额外套一层外层括号,只有判断条件里的函数调用需要传参时,才按函数规则写括号即可。
内容的提问来源于stack exchange,提问作者MBrann
相关产品推荐
相关产品推荐

