Power BI DAX度量需求:计算特定工作流状态下的日期差
Power BI DAX 度量解决方案:计算到达“Received pricing”状态的时长
基础度量(单记录/聚合场景)
直接筛选目标状态,计算两个日期的天数差:
到达Received Pricing时长 = CALCULATE( DATEDIFF( MAX('你的表名'[Created On Date]), MAX('你的表名'[Physical Date]), DAY ), '你的表名'[工作流状态] = "Received pricing" )
- 替换
你的表名为实际数据表名称 - 使用
MAX是为了确保在聚合或单记录场景下都能正确取到对应日期;如果每条记录唯一对应“Received pricing”状态,也可以用SELECTEDVALUE替代MAX
含空值处理的健壮度量
避免因日期为空导致的计算错误:
到达Received Pricing时长(含空值处理) = VAR FilteredData = FILTER('你的表名', '你的表名'[工作流状态] = "Received pricing") VAR StartDate = MAXX(FilteredData, '你的表名'[Created On Date]) VAR EndDate = MAXX(FilteredData, '你的表名'[Physical Date]) RETURN IF( NOT(ISBLANK(StartDate)) && NOT(ISBLANK(EndDate)), DATEDIFF(StartDate, EndDate, DAY), BLANK() )
按工单分组计算(多记录场景)
如果同一工单有多条状态记录,需要按工单单独计算时长:
按工单计算到达时长 = SUMX( VALUES('你的表名'[工单ID]), VAR TargetRecord = FILTER( '你的表名', '你的表名'[工作流状态] = "Received pricing" && '你的表名'[工单ID] = EARLIER('你的表名'[工单ID]) ) VAR StartDate = MAXX(TargetRecord, '你的表名'[Created On Date]) VAR EndDate = MAXX(TargetRecord, '你的表名'[Physical Date]) RETURN IF( NOT(ISBLANK(StartDate)) && NOT(ISBLANK(EndDate)), DATEDIFF(StartDate, EndDate, DAY), BLANK() ) )
- 替换
工单ID为实际的分组字段(如订单号、任务ID等)
常见问题排查
- 确认列名、表名完全匹配,注意大小写和空格
- 检查
Created On Date和Physical Date的数据类型是否为日期/时间,若为文本类型,需先用DATEVALUE转换(例如DATEVALUE('你的表名'[Created On Date])) - 如果可视化中无数据,检查筛选上下文是否冲突(比如页面级筛选器排除了目标状态记录)
内容的提问来源于stack exchange,提问作者kballar1
相关产品推荐
相关产品推荐

