星型模式[事实1:n维] ......怎么样?

Mik*_*tes 4 olap data-warehouse star-schema olap-cube

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

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

  • 事实表:销售点条目(测量值为DollarAmount)
  • 维度表:促销(这些是销售时有效的促销活动)

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

我该怎么做呢?

N W*_*est 8

对于真正具有"多值"维度的情况,桥表通常是Kimball推荐的解决方案.

您的"促销"维度只是每个促销的记录,包括其属性(开始日期,结束日期,优惠券代码,POS促销代码,广告名称等).从促销到产品的关系不在这里建模,因为它将反映在事实表中.

促销/折扣尺寸看起来像(每个独特的计划促销1排)

Promotion Dim ID
Promo Code
Coupon Code
Promo Start DTTM
Promo End DTTM
... etc ...
Run Code Online (Sandbox Code Playgroud)

您的销售事实如下:

Tran Date
Tran Line #
Customer Dim ID
Product Dim ID
Promotion Group Dim ID
Net Sale Price
Average Cost
Discount Amount
Run Code Online (Sandbox Code Playgroud)

您的"促销组"桥接表将是一组组合:

Promotion Group Dim ID
Promotion Dim ID
Run Code Online (Sandbox Code Playgroud)

如果发生了3次促销活动,您只需创建与每个促销相关的组ID,然后将组ID放在事实表上.它与医疗报告系统处理多种诊断的方式非常相似.

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

  • 这是一个迟了2.5年的答案,但我自己一直在处理这个问题,所以我想我会添加我的答案. (3认同)