小编use*_*481的帖子

在星型模式中,当维度具有日期属性时该怎么办?

我正在尝试了解维度模型和星型模式。假设我有一个销售事实表,记录零售商店的总销售额,其中有四个维度:日期、客户、商店和促销(如优惠券等促销活动)。(下面的伪模式)。

我真的很喜欢用星期几等属性预先填充“日期”维度的想法,这样您就可以通过看似复杂的条件(例如“过去 10 年第二季度的星期六”)轻松过滤事实。

现在,假设我希望促销维度具有 Start_Date 和 End_Date 属性,它们表示促销的开始和结束。我该怎么做呢?我想了想,得出了三个不太理想的解决方案:

1) 使 Start_Date 和 End_Date 成为常规的原子属性(ISO8601 字符串或数据库的日期时间对象),并且仅允许有限的过滤。

2) 将 Start_Date 和 End_Date 外键设置为 Date 表,打破星型模式,但允许与完整 Date 维度相同的过滤功能。

3) 包括 Start_Date_Day_of_Week、Start_Date_Quarter 等属性,维护星型模式,但增加维度大小,并在促销维度中复制日期维度的结构。

Sales Table
-----------
Date key      (FK to Dates table)
Promotion key (FK to Promotions)
Customer key  (FK to Customers table)
Store key     (FK to Stores)
Sales Amount  

Date Table
----------
Date Key (PK)
Month
Day of week
Day of month
Day of Quarter
Day of year
Holiday?
Quarter
Day since …
Run Code Online (Sandbox Code Playgroud)

data-warehouse dimension

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

data-warehouse ×1

dimension ×1