是否可以在数据仓库中创建重复维度?

时间:2010-08-26 10:50:44

标签: data-warehouse

是否有可以处理数据仓库中重复维度的模式?我有反复出现的公司科目结构。可以在每个级别分配销售事实。实施例

 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并尝试配置Mondrian和JPalo

2 个答案:

答案 0 :(得分:1)

简单地将其去规范化为dimDepartment表

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

所以对于整个公司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'作为默认子公司名称。”

答案 1 :(得分:0)

这里的问题实际上与粗糙的层次结构与固定层次结构的建模有关。这是一个很大的主题,虽然有存储和查询不规则层次结构的方法,但在许多情况下,您会发现架构或业务模型的一个或其他方面限制您回到固定/命名级别的层次结构 - 因此除非深度是真正武断的(很少是)你最好选择合理的价值并在此基础上实施。例如,在您的数据中,它表明级别本身是已知的/已定义的但可以是可选的 - 公司/子公司/部门/子部门等 - 如果您想总结所有人力资源部门的成本公司,如果你总是认为数据存在于树的特定级别(例如3),你会发现它更容易......

中号