2010-08-26 100 views
1

有沒有一種模式可以處理數據倉庫中的循環維度?我有復發的公司主題結構。銷售事實可以在每個級別分配。示例是否可以在數據倉庫中創建循環維度?

Company A     <- sales facts here 
    Company A subcompany <- sales facts here 
     Department A1  <- sales facts here 
     Department A2  <- sales facts here 
Company B     <- sales facts here 
Company C     <- sales facts here 
    Company C department <- sales facts here 

在顯示公司A的銷售額總額時,我希望它是整棵樹的銷售額的總和。

在我的關係數據庫中,我有一個父子重複結構。我不能(或不知道如何)在數據倉庫中創建這種結構,因爲必須定義維度級別。

我想到了3層次的層次結構,但有些公司完全沒有部門。

我使用InfiniDB並嘗試配置蒙德里安和JPalo

回答

1

只要這對於整個公司去歸到dimDepartment表

dimDepartment   Example Data 
----------------  ------------- 
DepartmentKey   1234 
DepartmentBusinessKey a_b_a1 
Department    A1 
SubCompany    B 
Company     A 

所以:

select 
    sum(Amount) as TotalSale 
    , sum(Taxes) as TotalTax 
from factSale  as f 
join dimDepartment as d on d.DepartmentKey = f.DepartmentKey 
where Company = 'A' 

爲A公司的子公司B

where Company = 'A' 
    and SubCompany = 'B' 

的部門A1,分B公司,A公司

where Company = 'A' 
    and SubCompany = 'B' 
    and Department = 'A1' 

如果一個公司沒有個子公司,簡單地使用「none' or 'main'作爲默認子的公司名稱。

+0

存在的數據和這是我走進過一個解決方案。它看起來是唯一有意義的。 – 2010-08-27 06:41:12

0

在這裏你的問題確實涉及到不整齊層次結構與固定層次結構的建模。這是一個很大的主題,雖然存儲和查詢不規則層次結構的方法很多,但在很多情況下,您會發現體系結構或業務模型的一個或另一個方面會限制您返回固定/命名級別的層次結構 - 因此除非深度是真正的武斷(很少),你最好選擇一個合理的價值,並根據它實施。以您的數據爲例,這表明這些級別本身是已知/定義的,但可能是可選的 - 公司/子公司/部門/子部門等 - 如果您想總結所有人力資源部門的成本公司你會發現,如果要容易得多,你總是新的,在特定級別的樹(如3)...

中號

相關問題