如何在Power BI中使用DAX基于‘逾期销售额<当前月份’的条件计算逾期销售额
计算符合「逾期销售额<当前月份」条件的逾期销售额(Power BI DAX实现)
嘿,我来帮你搞定这个Power BI里的DAX计算需求!本质上我们要做的就是筛选出逾期时间早于当前月份的销售额总和,下面分两种常见场景给你具体的实现方法:
场景1:数据里有完整的「逾期日期」字段(日期格式)
如果你的销售表中存储的是完整的逾期日期(比如2024-03-15这种格式),可以用下面的度量值:
逾期销售额_当前月之前 = VAR CurrentMonthStart = STARTOFMONTH(TODAY()) // 获取当前月份的第一天 RETURN CALCULATE( SUM('销售表'[销售额]), // 计算符合条件的销售额总和 '销售表'[逾期日期] < CurrentMonthStart // 筛选逾期日期早于当前月第一天的记录 )
代码解释:
VAR定义了一个变量CurrentMonthStart,用来存储当前月份的第一天,这样代码更易读也方便后续调整。CALCULATE是DAX中修改筛选上下文的核心函数,这里我们用它来限定只计算逾期日期在当前月份之前的销售额。
场景2:数据里只有「逾期月份」字段(数字格式,比如1=1月,12=12月)
如果你的数据里没有完整日期,只有逾期月份的编号,可以用这个版本:
逾期销售额_当前月之前 = VAR CurrentMonth = MONTH(TODAY()) // 获取当前月份的数字编号(比如5代表5月) RETURN CALCULATE( SUM('销售表'[销售额]), '销售表'[逾期月份] < CurrentMonth // 筛选逾期月份小于当前月份的记录 )
额外提示:
- 记得把代码里的
'销售表'、[销售额]、[逾期日期]/[逾期月份]替换成你数据模型里的实际表名和字段名! - 如果报表页面上有其他日期筛选器,而你希望这个度量值不受这些筛选影响,可以在
CALCULATE里加上ALL('日期表')来清除额外的日期上下文,比如:
逾期销售额_当前月之前(忽略其他日期筛选) = VAR CurrentMonthStart = STARTOFMONTH(TODAY()) RETURN CALCULATE( SUM('销售表'[销售额]), '销售表'[逾期日期] < CurrentMonthStart, ALL('日期表') // 忽略页面上的日期筛选器影响 )
内容的提问来源于stack exchange,提问作者Drgrd




