代码之家  ›  专栏  ›  技术社区  ›  S.Lott

合并来自不同来源的事实?还是分开装?

  •  3
  • S.Lott  · 技术社区  · 16 年前

    我将重新设计这个混乱,使之成为一个适当的、但很小的星形模式。

    这两个方面是显而易见的。例如,其中之一就是时间。

    这些事实数据都具有相同的粒度。它可以被称为“稀疏”,因为我们并不经常从所有供应商那里获得信息。

    这是一个事实表吗?有一些空值,是从不同的来源填充的吗?

    还是这个 +1个事实表——一个由客户填写,另一个由每个供应商填写?


    客户提供收入、成本、计数、权重和其他他们知道的关于交易结束的信息。

    VendorOne提供了一些关于某些事务的附加细节——权重、成本、持续时间。其他交易记录将没有供应商一的价值。

    供应商2提供了一些关于一些交易的额外细节——交易量、持续时间、长度、外币汇率。其他交易记录对供应商2没有价值。

    某些事务将同时包含两个供应商。少数交易将没有供应商。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Bell    16 年前

    我会选择单一事实表。这种方法的突出优点是,它在加载时而不是在查询时完成所有繁重的工作。

        2
  •  1
  •   Bob Probst    16 年前

    从你所描述的,它听起来像一个单一的事实表是前进的方向。

    我之前的问题实际上是想找出一些供应商数据是否适合自己的维度。我会让你来决定的。但听起来不太像。

    Null facts可以在聚合期间抛出警告(取决于平台),但用可能误导的零填充警告的替代方法更糟糕。

        3
  •  1
  •   Eric Sabine    16 年前

    我认为,由于两个来源共享相同的粒度,答案是您应该有一个事实表。考虑一下您希望最终用户如何与信息交互。如果这是有意义的,并且业务报告将受益于这些数据的共同定位,那么这就是您的答案。尝试避免事实表中出现空值。如果您可以输入一个零(并且零对数据有意义,即,考虑温度),那么就这样做。这将为您的用户节省一些混乱,正如特里基尼克松所指出的,这将导致聚合问题。

    实际上,在“棕色地带”应用程序中,您正处于一个重要的位置。您可以查看当前存在的内容,并利用经验创建更好的设计。这是选择在DW使用寿命内不会改变的最佳晶粒的最重要时间。