计划的数据仓库维度(维度建模)

时间:2019-07-05 20:48:28

标签: data-warehouse dimensional-modeling

我还没有找到构建包含计划属性的维度的示例或方法。例如,在我的场景中,我正在建立一个数据仓库,这将有助于收集有关播客/广播节目的分析。

我们有以下内容:

  • dim_episode
  • dim_podcast_show
  • dim_date
  • fact_user_daily_activity

我正在尝试添加另一个维度,其中包含有关podcast_show的日程表属性,例如,某些节目每天播出其剧集,其他节目则在周二和周四播出,其他节目仅在星期六播出。

dim_show_schedule(选项1)

| schedule_key | show_key | time  | sunday_flag | monday_flag | tuesday_flag | wednesday_flag | thursday_flag | friday_flag | saturday_flag |
|--------------|----------|-------|-------------|-------------|--------------|----------------|---------------|-------------|---------------|
| 1            | 0        | 00:30 | 0           | 0           | 1            | 0              | 1             | 0           | 0             |
| 2            | 1        | 12:30 | 0           | 1           | 1            | 1              | 1             | 1           | 0             |
| 3            | 2        | 21:00 | 0           | 0           | 0            | 0              | 0             | 0           | 1             |

但是,最好有一个类似以下内容的桥表:

bridge_show_schedule(选项2)

| show_key | day_key |
|----------|---------|
| 0        | 2       |
| 0        | 4       |
| 1        | 1       |
| 1        | 2       |
| 1        | 3       |
| 1        | 4       |
| 1        | 5       |

我已经搜索了Kimball的数据仓库生命周期工具包,但找不到该用例的示例。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您保留一个带有字符串属性的维度(例如“ M,W,F”),说明该日期是哪一天,那么您拥有的条目最多为2 ^ 7,128。桥接表是不必要的复杂操作。

答案 1 :(得分:0)

选项1

您可以创建一个计划维度,该计划维度针对每个可能的计划(每天128个组合)以及每个合理的开始时间都具有唯一的记录。使用5分钟间隔仍将少于37,000行,对于一个维度而言,这是微不足道的。

选项2

如果要改用日期维度,请创建一个“计划的”事实,将显示维度与该将来日期的日期维度相关联。这将在您的ETL流程中处理以映射关系。您的日期维度应该已经包含星期和星期几的逻辑。您还可以利用“显示持续时间”属性来创建一个半累加的计算量度,以轻松获取该时期的总编程量。

我会选择选项2,因为它提供了更多的分析可能性。