我正在尝试概述每月服务的员工,服务的员工数量和该月离职的员工数量。
我每月都有在职员工的概况,如下所示:
+----------+----------+------------+
| date | Employee | Department |
+----------+----------+------------+
| 1/1/2019 | A | Sales |
| 1/1/2019 | D | Projects |
| 2/1/2019 | A | Sales |
| 2/1/2019 | B | Sales |
| 2/1/2019 | C | Marketing |
| 2/1/2019 | D | Projects |
| 3/1/2019 | A | Marketing |
| 3/1/2019 | B | Sales |
| 3/1/2019 | C | Marketing |
| 3/1/2019 | D | Projects |
| 4/1/2019 | A | Marketing |
| 4/1/2019 | B | Sales |
+----------+----------+------------+
要计算一个月内在职员工的数量,请使用以下方法:
# Employees = COUNTROWS(Employees)
想法是使用PREVIOUSMONTH表达式查找上个月的雇员人数并将其与本月进行比较:
# Employees Last Month = CALCULATE([# Employees],PREVIOUSMONTH(DateTable[Date]))
然后可以使用以下公式轻松计算每月的净流入/流出:
Inflow/Outflow = [# Employees] - [# Employees Last Month]
将这些信息扔给每位员工一张表,可以得到我期望的概述:
我现在想每月将所有流入/流出= 1的雇员总计为流入,将流入/流出= -1的雇员总计为流出。这就是我遇到问题的地方。
我的流入量测似乎很好:
Inflow =
SUMX (
FILTER (
ADDCOLUMNS (
CROSSJOIN ( VALUES ( DateTable[MonthSort] ), VALUES ( Employees[Employee] ) ),
"IO", [Inflow/Outflow]
),
[IO] = 1
),
[IO]
)
但流出度量不返回任何内容:
Outflow =
SUMX (
FILTER (
ADDCOLUMNS (
CROSSJOIN ( VALUES ( DateTable[MonthSort] ), VALUES ( Employees[Employee] ) ),
"IO", [Inflow/Outflow]
),
[IO] = -1
),
[IO]
)
似乎在特定月份没有数据的雇员的上下文中,VALUES(Employee [Employee])表达式不返回任何值(使用测试度量),这可能解释了该问题:
TestEmployee = MAX(Employee[Employee])
我有什么想念的吗?作为计算表,这些表达式似乎可以正常工作。
答案 0 :(得分:1)
介绍一个员工维度,其中仅包含唯一员工的属性(例如,他们的ID,他们的姓名-与其保持一致的任何内容)。非常明确地,该维度不应包含部门,因为部门会随着时间的推移而变化。
In =
COUNTROWS (
FILTER (
VALUES ( 'DimEmployee'[Employee] ),
[Inflow/Outflow] = 1
)
)
Out =
COUNTROWS (
FILTER (
ALL ( 'DimEmployee'[Employee] ),
[Inflow/Outflow] = -1
)
)
您发现某个特定日期不存在的员工。由于“ DimEmployee”没有日期上下文,因此没关系。