父子維度是 SSAS 中特殊的維度類型,其核心在於單一資料表內部的遞迴關聯。以員工組織架構為例,DimEmployee 表的 ParentEmployeeKey 參考自身的 EmployeeKey,形成樹狀階層。
-- 員工維度表(含自參考外鍵)
SELECT EmployeeKey, ParentEmployeeKey, ...,
CASE WHEN ISNULL(MiddleName,'') = '' THEN FirstName + ' ' + LastName
ELSE FirstName + ' ' + MiddleName + ' ' + LastName END AS FullName,
Title
INTO DimEmployee FROM AdventureWorksDW2012.dbo.DimEmployee;
-- 經銷商銷售事實表
SELECT ProductKey, OrderDateKey, EmployeeKey, ...
INTO FactResellerSales FROM AdventureWorksDW2012.dbo.FactResellerSales;
-- 定義約束
ALTER TABLE DimEmployee ADD CONSTRAINT PK_EmployeeKey PRIMARY KEY CLUSTERED (EmployeeKey);
ALTER TABLE DimEmployee ADD CONSTRAINT FK_ParentEmployeeKey FOREIGN KEY(ParentEmployeeKey) REFERENCES DimEmployee(EmployeeKey);
ALTER TABLE FactResellerSales ADD CONSTRAINT FK_EmployeeKey FOREIGN KEY(EmployeeKey) REFERENCES DimEmployee(EmployeeKey);

EmployeeKey 設為鍵屬性,ParentEmployeeKey 設為父屬性。此結構支援無限層級的組織架構,且無需預先定義固定層級數量,極具彈性。