我每天在 DimPerson 维度表中跟踪员工变化,并在每个月底填写我的事实表并计算 Hires、Exits 和 Headcount。对于此示例,假设我将在 4 月 30 日月底填充事实表。现在这是我面临的问题:我在 4 月 17 日有一个员工记录,这是一个“雇用”操作,所以当时我的 DimPerson 表如下所示:
+-------+-----------+----------+--------+--------------------+-------+
| EmpNo | Firstname | LastName | Action | EffectiveStartDate | isCur |
+-------+-----------+----------+--------+--------------------+-------+
| 4590 | John | Smith | Hire | 4/17/2017 | Y |
+-------+-----------+----------+--------+--------------------+-------+
现在 2 天后,我看到同一个员工,但有一个动作“经理变更”,所以现在我的 DimPerson 表变成了这样:
+-------+-----------+----------+-----------------+--------------------+-------+
| EmpNo | Firstname | LastName | Action | EffectiveStartDate | isCur |
+-------+-----------+----------+-----------------+--------------------+-------+
| 4590 | John | Smith | Hire | 4/17/2017 | N |
| 4590 | John | Smith | Manager Change | 4/19/2017 | Y |
+-------+-----------+----------+-----------------+--------------------+-------+
因此,在月底,当我选择所有“当前”员工时,我会错过此人的招聘捕获,因为他最近的记录只是经理变更,而实际招聘发生在“当月”。在进行定期快照时,您可能会错过某些更改,这是否正常?在这种情况下,您建议我做什么来捕获 Hire 操作?