DAX实现:统计所有项目中最后完成任务的全局计数
问题:统计各任务编号作为项目最后完成任务的次数
示例数据
Project 1 - 1 - Completed Project 1 - 2 - Completed Project 1 - 3 - In progress Project 1 - 4 - Completed Project 1 - 5 - In progress Project 2 - 1 - Completed Project 2 - 2 - In progress Project 2 - 3 - In progress Project 2 - 4 - In progress Project 2 - 5 - Completed Project 3 - 1 - Completed Project 3 - 2 - In progress Project 3 - 3 - In progress Project 3 - 4 - In progress Project 3 - 5 - Completed
需求说明
统计每个任务编号,在对应项目中作为最后完成任务(即该项目中编号最大的已完成任务)的次数,预期结果如下:
1 - 0 2 - 0 3 - 0 4 - 1 5 - 2
当前问题
已实现按单个项目计算最后完成任务的DAX公式,但无法实现全局范围的次数统计:
CALCULATE( MAX(task), Status = "Completed")
解决方案
步骤1:创建任务编号维度表
先建立一个包含所有任务编号的维度表(例如命名为Task Numbers,列Task的值为1到5),用于展示全量任务编号的统计结果。
步骤2:编写统计度量值
使用以下DAX度量值实现全局统计(注意替换YourTable为你的实际数据表名):
Count as Last Completed = VAR ProjectLastTasks = ADDCOLUMNS( VALUES('YourTable'[Project]), "@LastCompletedTask", CALCULATE(MAX('YourTable'[Task]), 'YourTable'[Status] = "Completed") ) RETURN COUNTROWS(FILTER(ProjectLastTasks, [@LastCompletedTask] = SELECTEDVALUE('Task Numbers'[Task])))
逻辑说明
ADDCOLUMNS+VALUES('YourTable'[Project]):遍历所有独立项目,为每个项目计算其最大的已完成任务编号(即最后完成的任务)FILTER+COUNTROWS:筛选出所有项目中最后完成任务编号等于当前选中任务号的记录,统计行数即为该任务号的次数
结果展示
将Task Numbers表的Task列放到可视化组件的行区域,将上述度量值放到值区域,即可得到预期的统计结果。
内容的提问来源于stack exchange,提问作者Michal
相关产品推荐
相关产品推荐

