基于Power BI DirectQuery的DAX分组统计父任务成败数量
DAX实现父任务成功/失败统计(DirectQuery模式)
核心逻辑
按父任务分组,判断该父任务下所有子任务的状态是否全部为finished:
- 全为
finished则标记为成功 - 否则标记为失败
再基于这个标记统计对应父任务的数量。
1. 创建父任务状态判断度量值
先定义一个度量值来判定单个父任务的状态:
父任务状态 = VAR 当前父任务子状态 = CALCULATETABLE( VALUES('任务表'[子任务状态]), ALLEXCEPT('任务表', '任务表'[父任务ID]) ) RETURN IF( COUNTROWS(当前父任务子状态) = 1 && "finished" IN 当前父任务子状态, "成功", "失败" )
说明:ALLEXCEPT用于锁定当前父任务的上下文,获取该父任务下所有子任务的去重状态集合。如果集合仅包含finished这一个值,说明所有子任务都完成,标记为成功;反之则为失败。
2. 统计成功/失败父任务数量
基于上面的状态度量值,分别创建统计数量的度量值:
成功父任务数量
成功父任务数 = CALCULATE( DISTINCTCOUNT('任务表'[父任务ID]), FILTER( VALUES('任务表'[父任务ID]), [父任务状态] = "成功" ) )
失败父任务数量
失败父任务数 = CALCULATE( DISTINCTCOUNT('任务表'[父任务ID]), FILTER( VALUES('任务表'[父任务ID]), [父任务状态] = "失败" ) )
DirectQuery模式适配说明
- 上述DAX写法会被Power BI自动转换为对应的SQL查询,完全适配DirectQuery模式,无需提前创建SQL视图。
- 请将代码中的
'任务表'、[父任务ID]、[子任务状态]替换为你实际的表名和字段名。
内容的提问来源于stack exchange,提问作者shalpha
相关产品推荐
相关产品推荐

