带条件的LASTDATE函数应用:计算达成百分比后的天数
解决DAX计算达成指定百分比天数的问题
嘿,我来帮你搞定这个DAX的问题~首先得指出你原来公式里的核心问题:LASTDATE函数的参数必须是日期类型的列,但你传入的是百分比列[Pct. Test],这就是报错的根源啦。另外你用CALCULATE包裹的写法逻辑也有点偏差,咱们一步步来修正。
针对不同需求的解决方案
假设你的Testtable里有一个日期列(比如叫Date,用来记录每个百分比对应的日期),分几种常见需求给你对应的公式:
1. 获取首次达到74.5%以上的日期
如果要找第一次达成目标的日期,先筛选出符合条件的行,再用MINX取最小日期即可:
FirstReachDate = VAR FilteredRows = FILTER( 'Testtable', 'Testtable'[Pct. Test] > 74.5 ) RETURN MINX(FilteredRows, 'Testtable'[Date])
2. 获取最后一次达到74.5%以上的日期
如果你确实需要最后一次达成的日期(对应你原来用LASTDATE的想法),把上面的MINX换成MAXX取最大日期就行:
LastReachDate = VAR FilteredRows = FILTER( 'Testtable', 'Testtable'[Pct. Test] > 74.5 ) RETURN MAXX(FilteredRows, 'Testtable'[Date])
3. 计算从起始日到达成日的天数
如果要进一步计算天数(比如从表中最早的日期到首次达成日的间隔),可以用DATEDIFF函数实现:
DaysToFirstReach = VAR FirstDate = MINX( FILTER('Testtable', 'Testtable'[Pct. Test] > 74.5), 'Testtable'[Date] ) VAR StartDate = MIN('Testtable'[Date]) -- 这里用表中最早日期作为起始,你也可以换成固定日期比如DATE(2024,1,1) RETURN DATEDIFF(StartDate, FirstDate, DAY)
额外注意事项
- 确保你的日期列是日期/时间类型,如果是文本格式,需要先用
DATEVALUE函数转换成日期类型。 - 如果你的数据是按分组(比如不同项目)统计的,可以在
FILTER里加上分组条件,比如'Testtable'[ProjectID] = SELECTEDVALUE('Projects'[ProjectID]),这样就能按分组计算每个项目的达成天数啦。
内容的提问来源于stack exchange,提问作者Qwerty
相关产品推荐
相关产品推荐

