如何用Power BI DAX基于现有日期列计算当月最后一个周五
在DAX中计算当月最后一个周五
你可以通过以下DAX计算列实现需求,基于你已有的Date列:
当月最后一个周五 = VAR 月末日期 = EOMONTH([Date], 0) VAR 月末星期序号 = WEEKDAY(月末日期, 2) // 参数2:周一=1,周日=7,周五对应固定序号5 RETURN 月末日期 - MOD(月末星期序号 - 5 + 7, 7)
公式拆解:
EOMONTH([Date], 0):获取当前日期所在月份的最后一天,这是你已经掌握的步骤。WEEKDAY(月末日期, 2):将月末日期转换为星期序号,参数2确保周一到周日对应1到7,让周五的序号固定为5,简化后续计算。MOD(月末星期序号 - 5 + 7, 7):计算从月末日期往前回溯的天数,自动适配所有情况:- 月末是周五时,结果为0,直接返回月末日期;
- 月末是周六/周日时,分别往前推1/2天得到周五;
- 月末是周一到周四时,往前推对应天数(比如周四推6天),得到当月最后一个周五。
更直观的等价写法:
如果觉得MOD函数不好理解,也可以用条件判断实现相同逻辑:
当月最后一个周五 = VAR 月末日期 = EOMONTH([Date], 0) VAR 月末星期序号 = WEEKDAY(月末日期, 2) RETURN 月末日期 - IF(月末星期序号 >= 5, 月末星期序号 - 5, 月末星期序号 + 2 )
将上述公式添加到你的日历表中作为计算列,就能为每个日期匹配其所在月份的最后一个周五。
内容的提问来源于stack exchange,提问作者TheBoomerang
相关产品推荐
相关产品推荐

