PowerBI月累计日均事项数计算异常:未截止至当前日期
解决PowerBI中日均事项数未截止当前日期的问题
嘿,我来帮你搞定这个DAX计算的小麻烦!你的核心问题是当前月的日均计算用了全月总工作日,但实际上只应该统计到当前日期为止的已完成工作日,同时不影响过往月份的结果对吧?下面是具体的解决方案:
问题根源
原来的SUM(Dates[IsWorkday])会统计整个筛选月份的所有工作日,包括当前月还未到来的日期,所以才会出现用20天总工作日而不是18天已完成工作日的情况。我们需要给当前月加一个特殊判断,只计算到当前日期的工作日数。
解决方案
我们可以先创建一个有效工作日数的度量值,区分当前月和过往月份的计算逻辑,再用它替换原来公式里的SUM(Dates[IsWorkday])。
步骤1:创建「有效工作日数」度量值
Valid Workdays = VAR CurrentDate = TODAY() VAR CurrentMonthEnd = EOMONTH(CurrentDate, 0) VAR SelectedMonthEnd = EOMONTH(MAX(Dates[Date]), 0) RETURN IF( // 判断当前筛选的月份是否是当前日历月 SelectedMonthEnd = CurrentMonthEnd, // 当前月:只统计到今天为止的工作日 CALCULATE( SUM(Dates[IsWorkday]), Dates[Date] <= CurrentDate ), // 过往月份:统计整月总工作日 SUM(Dates[IsWorkday]) )
步骤2:调整「日均事项数」度量值
把原来的Avg Per Day替换成下面的公式:
Avg Per Day = DIVIDE([Matters], [Valid Workdays])
公式解释
CurrentDate:获取系统当前日期(如果你的报表有自定义的「报表日期」参数,可以把这个替换成参数值,更灵活)CurrentMonthEnd和SelectedMonthEnd:通过月份最后一天来判断当前筛选的月份是否是当前月,避免跨月的日期判断误差CALCULATE函数:在当前月的情况下,额外添加Dates[Date] <= CurrentDate的筛选条件,只统计已过去的工作日
注意事项
- 确保你的
Dates日期表包含当前月的所有日期(包括未来的日期),否则筛选可能不生效 - 测试时可以分别查看过往月份和当前月的计算结果,确认过往月份依然用全月工作日,当前月用截止到今天的工作日数
内容的提问来源于stack exchange,提问作者Clive Bredenkamp
相关产品推荐
相关产品推荐

