Power BI技术需求:用DAX函数实现按日期计算TotalWorkHours总和并新增列
DAX解决按日期分组求和新增列问题
错误原因
你之前的DAX表达式无效,是因为Filter里的条件MarginReport[WkSTDate]=MarginReport[WkSTDate]没有实际筛选作用——它对所有行都成立,最终计算的是整个表的TotalWorkHours总和,而非按日期分组的总和。
正确DAX表达式
以下两种方法都能实现需求:
方法1:使用CALCULATE + ALLEXCEPT(推荐,更简洁高效)
Nume = CALCULATE( SUM(MarginReport[TotalWorkHours]), ALLEXCEPT(MarginReport, MarginReport[WkSTDate]) )
ALLEXCEPT会保留当前行的WkSTDate上下文,移除其他列的筛选,从而计算当前日期对应的TotalWorkHours总和。
方法2:修正SUMX + Filter的筛选条件
Nume = SUMX( FILTER( MarginReport, MarginReport[WkSTDate] = EARLIER(MarginReport[WkSTDate]) ), MarginReport[TotalWorkHours] )
用EARLIER获取当前行的WkSTDate值,让Filter精准筛选出所有同日期的记录,再对这些记录的TotalWorkHours求和。
操作步骤
将上述任意一个表达式作为计算列添加到MarginReport表中,即可实现:所有WkSTDate为11-nov-23的行,Nume列显示780;所有WkSTDate为12-nov-23的行,Nume列显示200。
内容的提问来源于stack exchange,提问作者Vikas Rawat
相关产品推荐
相关产品推荐

