代码之家  ›  专栏  ›  技术社区  ›  RRG

雪花数据仓库模式中的多个公共表?

  •  0
  • RRG  · 技术社区  · 7 年前

    我试图为数据仓库创建一个雪花模式,但事实证明,有多种类型的数据适合该中心。 例如:【factSales】有【订单】、【员工】、【客户】、【发货】等。。。 那么上述所有人也都有[地址]。我在哪里可以准确地匹配[地址]表? 我希望避免数据重复,因此不能将属性放在其他每个表中。

    1 回复  |  直到 7 年前
        1
  •  0
  •   jmng    7 年前

    客户的地址应捕获为客户维度上的字段,例如“街道名称”、“邮政编码”、“城市”和“国家”。类似地,“发货地址”(通常)是客户的特征,因此它也应该是客户维度中的一组字段。

    “订单地址”取决于其功能含义:它可以是下单的商店或其他销售渠道(如网站)的地址,在这种情况下,地址将是商店/渠道维度中的一个字段。

    因此,如果我理解正确,您模型的结构类似于:

    • 事实:SalesOrder
    • 维度:客户、员工、最终门店/渠道

    维度将有字段来存储适当的地址,例如,客户维度可以有三组文本字段来存储每个地址:一组用于家庭地址、工作地址和发货地址。

    这也可以通过拥有一个单独的地址维度来建模,该维度包含数据中存在的所有可能的地址,并被所有其他维度引用。例如,在这种情况下,客户维度可以有三个指向地址维度的外键(引用),而不是像以前那样的实际地址:一个用于家庭地址、工作地址和发货地址。但前一种方法可能更简单。

    星型模式中有重复数据没有问题,大多数具有层次结构的维度在设计上都会有重复/冗余数据,因为模型是故意非规范化的: https://en.wikipedia.org/wiki/Denormalization