是否有可以处理数据仓库中重复维度的模式?我有反复出现的公司科目结构。可以在每个级别分配销售事实。实施例
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
答案 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),你会发现它更容易......
中号