我有一个包含所有员工的表(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 等但无济于事。
这个问题有解决办法吗?
试试这个:
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]) )
)