You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power BI中计算日期所属的当月周数?

解决DAX计算当月周数错误的问题

问题根源

你当前使用的公式依赖WEEKNUM的全年周数差值计算,这种方法存在明显缺陷:当月份第一天所在的全年周数与当前日期的全年周数跨年度(比如1月初),或者周起始规则不匹配时,结果会失真。比如2022年3月1日是周二,若WEEKNUM用默认的周日起始规则,3月1日属于第9周、3月21日属于第12周,按原公式应得4,但你得到1,说明周起始参数或日期识别环节出了问题——换用基于当月日期的计算逻辑更可靠。

正确DAX公式

根据你需要的周起始规则,选择对应公式:

规则1:周起始为周日(与WEEKNUM参数1一致)

Week of Month = 
VAR MonthStart = STARTOFMONTH('ECR'[Date Originated])
VAR DayOfMonth = DAY('ECR'[Date Originated])
VAR WeekdayOfMonthStart = WEEKDAY(MonthStart, 1) // 周日=1,周一=2…周六=7
RETURN
CEILING((DayOfMonth + WeekdayOfMonthStart - 1)/7, 1)

规则2:周起始为周一(与WEEKNUM参数2一致)

Week of Month = 
VAR MonthStart = STARTOFMONTH('ECR'[Date Originated])
VAR DayOfMonth = DAY('ECR'[Date Originated])
VAR WeekdayOfMonthStart = WEEKDAY(MonthStart, 2) // 周一=1,周二=2…周日=7
RETURN
CEILING((DayOfMonth + WeekdayOfMonthStart - 1)/7, 1)

验证你的示例

  • 针对Tuesday, March 21, 2022:
    3月1日是周二,按周日起始规则计算,WeekdayOfMonthStart=3,代入公式得(21+3-1)/7≈3.28,经CEILING取整后为4,这是正确的当月周数(3月21日属于当月第4周)。
  • 针对Wednesday, April 6, 2022:
    4月1日是周五,按周日起始规则计算,WeekdayOfMonthStart=6,代入公式得(6+6-1)/7≈1.57,取整后为1,和你预期的结果一致。

额外提示

如果你的Date Originated列是文本格式,需先转换为日期类型,否则DAX函数无法正确识别:

Date Originated (Date Type) = DATEVALUE('ECR'[Date Originated])

之后用转换后的日期列计算周数即可。

内容的提问来源于stack exchange,提问作者thechans7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:01:19