我有一个表,其相关列为:ProjectName,TaskNo,AssignedTo和Status。数据看起来像这样:
--------------------------------------------------------------
| ProjectName | TaskNo | AssignedTo | Status |
+-----------------+------------+----------------+------------+
| Project1 | 00300 | Database | In Process |
+-----------------+------------+----------------+------------+
| Project2 | 02200 | Alfred | In Process |
+-----------------+------------+----------------+------------+
| Project2 | 00300 | Database | In Process |
+-----------------+------------+----------------+------------+
| Project3 | 02200 | Alfred | Complete |
+-----------------+------------+----------------+------------+
| Project3 | 00900 | Database | In Process |
+-----------------+------------+----------------+------------+
| Project4 | 02200 | Alfred | Complete |
+-----------------+------------+----------------+------------+
| Project4 | 01200 | Database | Complete |
+-----------------+------------+----------------+------------+
| Project4 | 00300 | Database |Not Started |
+-----------------+------------+----------------+------------+
每个项目有大约两个十几个任务编号,它们分配给许多不同的组。 我想在其中输出ProjectName的列表
TaskNo 02200的状态为“完成”且 至少有一项任务分配给数据库未完成。
从上表中,我想要的输出将是:
-------------------
| ProjectName |
+-----------------+
| Project3 |
+-----------------+
| Project4 |
-------------------
我已经设法通过以下FILTER
表达式过滤了非常大的列表-到了02200的未完成数据库任务:
FILTER (
'Project Tasks',
OR (
'Project Tasks'[Title] = "02200"
&& 'Project Tasks'[Status] = "Completed",
'Project Tasks'[GroupAssignedTo] = "Database"
&& 'Project Tasks'[Status] <> "Completed"
)
)
我似乎无法完全解决问题-在此过滤表中查找满足两个条件的
答案 0 :(得分:2)
诀窍在于,您需要将每个ProjectName
分组考虑,而不是逐行考虑。
为此,我们使用SUMMARIZE function:
FilteredProjects =
VAR Summary =
SUMMARIZE (
'Project Tasks',
'Project Tasks'[ProjectName],
"02200 Complete", COUNTROWS (
FILTER (
'Project Tasks',
'Project Tasks'[TaskNo] = "02200"
&& 'Project Tasks'[Status] = "Complete"
)
) > 0,
"Database Not Complete", COUNTROWS (
FILTER (
'Project Tasks',
'Project Tasks'[AssignedTo] = "Database"
&& 'Project Tasks'[Status] <> "Complete"
)
) > 0
)
RETURN
SELECTCOLUMNS (
FILTER ( Summary, [02200 Complete] && [Database Not Complete] ),
"ProjectName", 'Project Tasks'[ProjectName]
)
因此,对于每个ProjectName
组,您都要检查该子表是否具有满足指定条件的任何行。然后,您可以筛选出满足这两个条件的条件,然后只提取所需的一列。
Summary
表在过滤并剥离到一列之前是这样的:
-----------------------------------------------------------------
| ProjectName | 0200 Complete | Database Not Complete |
+-----------------+------------------+--------------------------+
| Project1 | False | True |
+-----------------+------------------+--------------------------+
| Project2 | False | True |
+-----------------+------------------+--------------------------+
| Project3 | True | True |
+-----------------+------------------+--------------------------+
| Project4 | True | True |
-----------------------------------------------------------------