使用上下文转换开发由另一个度量过滤的度量

问题描述 投票:0回答:1

我正在使用 Microsoft Power BI Desktop (.pbix) 和 DAX 语言。

我有以下场景:

enter image description here

我有一个名为 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 文件中的所有内容。

powerbi dax measure
1个回答
0
投票

我从员工维度和就业事实开始,然后就很简单了:

DimEmployee ( EmployeeID, EmployeeName, IsActive)

Employment (EmployeeID, Job)

Active w Multiple Jobs = 
FILTER('DimEmployee',
    'DimEmployee'[IsActiveEmployee] = "Y" &&
    COUNTROWS(RELATEDTABLE(JobsFact))>1)
© www.soinside.com 2019 - 2024. All rights reserved.