【问题标题】:Is it possible to create recurring dimension in data warehouse?是否可以在数据仓库中创建循环维度?
【发布时间】:2010-09-20 21:33:21
【问题描述】:

是否有一种模式可以处理数据仓库中的重复维度?我有经常性的公司主题结构。可以在每个级别分配销售事实。示例

 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

【问题讨论】:

    标签: data-warehouse


    【解决方案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' 作为默认子公司名称。

    【讨论】:

    • 这也是我遇到的一个解决方案。看起来它是唯一有意义的。
    【解决方案2】:

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

    M

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      相关资源
      最近更新 更多