我是数据仓库的新手,我希望有一个关于构建星型模式的简单问题:

如果我有一个事实表,其中的事实记录自然与单个维度具有一对多关系,那么如何建模星型模式来支持这一点?例如:

  • 事实表:销售点入口(
    计量单位为 DollarAmount)
  • 维度表:促销(这些
    促销事件是否有效
    出售)

  • 情况是我希望将单个销售点条目与多个不同的促销相关联。这些促销不能是它们自己的维度,因为有很多很多促销。

    我该怎么做呢?

    最佳答案

    对于真正拥有“多值”维度的情况,Kimball 推荐的解决方案通常是桥接表。

    您的“促销”维度只是每个促销及其属性(开始日期、结束日期、优惠券代码、POS 促销代码、广告名称等)的记录。从促销到产品的关系在这里没有建模,因为它会反射(reflect)在事实表中。

    促销/折扣维度看起来像(每个独特的计划促销 1 行)

    Promotion Dim ID
    Promo Code
    Coupon Code
    Promo Start DTTM
    Promo End DTTM
    ... etc ...
    

    您的销售情况如下所示:
    Tran Date
    Tran Line #
    Customer Dim ID
    Product Dim ID
    Promotion Group Dim ID
    Net Sale Price
    Average Cost
    Discount Amount
    

    您的“促销组”桥接表将是一组组合:
    Promotion Group Dim ID
    Promotion Dim ID
    

    如果销售有 3 个促销,您只需创建与每个促销相关的组 ID,然后将组 ID 放在事实表中。这与医疗报告系统处理多项诊断的方式非常相似。

    请注意,通过使用 Bridge 表,您可以轻松地重复计算销售额,因此我建议使用此方法的报告由了解该模型的人员开发。

    关于data-warehouse - 星型模式 [事实 1 :n dimension]. ..如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2785158/

    10-11 18:43