我不认为你会想要那样做。如果我理解正确,PeopleID 是您的自然密钥或源系统密钥,OfficerPeopleID 是您的 DW 代理密钥。在这种情况下,您需要有一列存储父代理键而不是父自然键。换句话说,您应该能够为表自己创建一个外键。根据您现在所拥有的,您可能拥有多个经理的记录,这会使您无法确定哪条记录是正确的。此外,为了让父子为您工作,子必须是表的键。
如果您想正确执行此操作,则应在 ETL 过程中填充 MgrOfficerPoepleID(新列)。如果您打算这样做,请确保在因为 SCD2 而有新行时更新管理器键值。但是,如果您仍希望将其作为 SSAS DSV 中的命名查询,您可以执行以下操作
SELECT
OffcerPeopleID,
-- ... insert other columns here
PeopleID,
MgrPeopleID,
(SELECT OfficerPeopleID
FROM dbo.Employee
WHERE(e.MgrPeopleID = PeopleID) AND (IsCurrent = 1)) AS MgrOfficerPoepleID
FROM dbo.OfficerPeopleDim AS e
WHERE IsCurrent = 1 -- this is your SCD2 flag. you could also use two date range columns