员工计数,每个员工有几行(不同部门)

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

我有一个包含所有员工的表(EMP),如下例所示。

EMP_ID 部门 出发_开始_日期 出发_结束_日期
1 A 2019-05-01 2099-12-31
2 A 2019-10-01 2021-04-10
2 B 2021-04-11 2099-12-31
3 C 2022-09-01 2099-12-31

除此之外,我还有一个日期表(CAL)。

为了计算员工人数,我使用以下方法:

Employees = CALCULATE(DISTINCTCOUNT(EMP[EMP_ID]),EMP[Dep_Start_Date]<=min(CAL[Date]) && EMP[Dep_End_Date]>=max(CAL[Date])))

问题是,当我在显示年份和月份的表格中查看此内容时,一切都很好。 但在仅显示年份的表格中,我发现员工 #2 更换了部门。

当我尝试查看特定年份的就业人数时,员工 #2 在 2021 年出现空白:

EMP_ID 2019 2020 2021 2022 2023
1 1 1 1 1 1
2 1 1 0 1 1
3 0 0 0 1 1

这样做的原因是,该度量计算出员工 #2 在 2019 年 10 月 1 日至 2021 年 4 月 10 日期间在部门 A 工作的一行,并在 2019 年和 2020 年显示。 此外,2021 年 4 月 11 日至 2099 年 12 月 31 日期间,员工 #2 的一行在 2022 年和 2023 年的值为 1。

但是对于 2021 年和员工#2来说,这两行都不满足这两个标准

<=min(CAL[Date]) && >=max(CAL[Date])

简单地说,该公式不会选择该员工的最短开始日期和最长结束日期。

我尝试了各种 SUMMARIZE、COUNTX 等但无济于事。

这个问题有解决办法吗?

powerbi dax measure
1个回答
0
投票

试试这个:

Employees2 = CALCULATE(
  DISTINCTCOUNT(EMP[EMP_ID]), 
  ( EMP[Dep_Start_Date]<=min(CAL[Date]) || EMP[Dep_Start_Date]<=max(CAL[Date]) ) &&
  ( EMP[Dep_End_Date]>=min(CAL[Date]) || EMP[Dep_End_Date]>=max(CAL[Date]) )
)
© www.soinside.com 2019 - 2024. All rights reserved.