我正在使用 Microsoft Power BI Desktop (.pbix) 和 DAX 语言。
我有以下场景:
我有一个名为 EmployeeTable 的表;它有 9 名不同的员工,但根据每个员工所从事的工作数量,每个员工可以有多于一行;比如说,乔治有 2 份工作(油漆工、司机),因此他有两行。
列:EmployeeTable[IsActiveEmployee]判断员工是否活跃?
此列只能有“是”或“否”值,分别缩写为“Y”和“N”。
一名员工的 IsActiveEmployee 值始终只有一个:“Y”或“N”,即使她身兼数职;比如说,Jeanne 有两份工作,IsActiveEmployee 列的两行都将始终读取“Y”或“N”(但不是两者);在这种情况下,两行的列都显示为“Y”;它永远不会在一行中读取“Y”,在另一行中读取“N”。
现在,主要要求:
制定一项措施来获取从事多项工作的活跃员工人数。
1) 首先确定 EmployeeTable[IsActiveEmployee] 列的值为“Y”的员工。
2) 然后,进一步过滤此列表,仅将其限制为从事不止一份工作的员工。
3) 然后,获取 DISTINCTCOUNT 的员工。
有9名不同的员工;其中 5 个处于活跃状态;在这 5 个活跃的人中,我需要统计有不止一份工作的人的人数。
虽然 George (EmployeeId = 3)、Adam (EmployeeId = 4)、Rebecca (EmployeeId = 6) 和 Jeanne (EmployeeId = 9) 有多个工作,但 Adam 必须被排除在外,因为他不是在职员工。
我需要答案为 3,即三个人(乔治、丽贝卡、珍妮)拥有不止一份工作,并且仍然活跃。
我如何得到这个?
我尝试过这样的事情:
HeadCountOfEmployees_Measure
=
DISTINCTCOUNT(EmployeeTable[EmployeeId])
HeadCountOfActiveEmployees_Measure
=
CALCULATE (
[HeadCountOfEmployees_Measure],
KEEPFILTERS(EmployeeTable[IsActiveEmployee] = "Y")
)
DistinctCountOfJobs_Measure
=
DISTINCTCOUNT(EmployeeTable[Job])
HeadCountOfActiveEmployeesWithMultipleJobs_Measure
=
SUMX(
FILTER(
VALUES(EmployeeTable[IsActiveEmployee]),
EmployeeTable[IsActiveEmployee] = "Y"
),
IF(
[DistinctCountOfJobs_Measure] > 1,
1,
0
)
)
它不起作用。有人可以提供一些建议吗?
我已详细介绍了此 .pbix 文件 和 Excel 文件中的所有内容。
我从员工维度和就业事实开始,然后就很简单了:
DimEmployee ( EmployeeID, EmployeeName, IsActive)
Employment (EmployeeID, Job)
Active w Multiple Jobs =
FILTER('DimEmployee',
'DimEmployee'[IsActiveEmployee] = "Y" &&
COUNTROWS(RELATEDTABLE(JobsFact))>1)