PowerBI中使用DAX计算项目不同里程碑间的时长
解决方案:PowerBI DAX计算指定里程碑间时长
DAX代码(用于在table_1中新增计算列)
Milestone1到Milestone2时长 = VAR Milestone1_Latest = CALCULATE( MAX(table_2[达成日期]), FILTER(table_2, table_2[ProjectID] = table_1[ProjectID] && table_2[里程碑名称] = "Milestone1") ) VAR Milestone2_Latest = CALCULATE( MAX(table_2[达成日期]), FILTER(table_2, table_2[ProjectID] = table_1[ProjectID] && table_2[里程碑名称] = "Milestone2") ) RETURN IF( NOT(ISBLANK(Milestone1_Latest)) && NOT(ISBLANK(Milestone2_Latest)), DATEDIFF(Milestone1_Latest, Milestone2_Latest, DAY), BLANK() )
代码说明
- 变量定义:通过两个VAR分别提取当前项目的
Milestone1和Milestone2最新达成日期,MAX()函数自动筛选同一项目同一里程碑的最大(最新)日期;FILTER()限定只匹配当前行的ProjectID和目标里程碑名称。 - 逻辑判断:用
IF()检查两个里程碑的最新日期是否都存在,若都存在则用DATEDIFF()计算天数差(第三个参数DAY指定按天计算,可按需改为MONTH或YEAR);若任意一个里程碑未达成(日期为空),则返回BLANK()留空。
注意事项
- 确保table_1与table_2已基于
ProjectID建立关系(无关系时代码仍可运行,但有关系能提升计算效率)。 - 替换代码中的
"Milestone1"和"Milestone2"为实际业务中的里程碑名称。 - 如需计算其他里程碑组合,只需修改VAR中的里程碑名称即可复用逻辑。
内容的提问来源于stack exchange,提问作者PowerBI_Beginner
相关产品推荐
相关产品推荐

