Power Query中添加以周六为周末的周末结束日期列问题
解决Power Query中以周六为周末结束日期的计算问题
直接用下面的M语言公式即可解决你遇到的两个问题:
Week End Date = Date.AddDays([txn_time], 6 - Date.DayOfWeek([txn_time], DayOfWeek.Sunday))
公式逻辑拆解
Date.DayOfWeek([txn_time], DayOfWeek.Sunday):指定周日为一周的第一天,返回0(周日)到6(周六)的数字6 - 上述结果:计算当前日期到最近周六需要往后加的天数:- 若当天是周六,结果为0,加0天直接返回当前日期
- 若当天是周日,结果为6,加6天得到下一周的周六
- 周一到周五时,结果为1到5,对应加1到5天即可到达本周六
验证你的问题场景
- 日期本身是周六(比如2024-03-23):
代入公式后,Date.DayOfWeek(#date(2024,3,23), DayOfWeek.Sunday)返回6,6-6=0,最终返回2024-03-23,不会跳去下一周。 - 跨月份的周日(比如2024-03-29):
Date.DayOfWeek(#date(2024,3,29), DayOfWeek.Sunday)返回0,6-0=6,Date.AddDays(#date(2024,3,29),6)得到2024-04-04(周六),不会错误返回3月28日。
为什么之前的方法出错
DAX和Power Query的日期函数参数逻辑不一样:DAX的WEEKDAY(,1)返回1(周日)到7(周六),但Power Query的Date.DayOfWeek默认返回0(周日)到6(周六),直接照搬DAX的计算逻辑到Power Query里就会出现日期偏移错误。
内容的提问来源于stack exchange,提问作者user21476558
相关产品推荐
相关产品推荐

