我还没有找到构建包含计划属性的维度的示例或方法。例如,在我的场景中,我正在建立一个数据仓库,这将有助于收集有关播客/广播节目的分析。
我们有以下内容:
我正在尝试添加另一个维度,其中包含有关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的数据仓库生命周期工具包,但找不到该用例的示例。
有什么想法吗?
答案 0 :(得分:1)
如果您保留一个带有字符串属性的维度(例如“ M,W,F”),说明该日期是哪一天,那么您拥有的条目最多为2 ^ 7,128。桥接表是不必要的复杂操作。
答案 1 :(得分:0)
选项1
您可以创建一个计划维度,该计划维度针对每个可能的计划(每天128个组合)以及每个合理的开始时间都具有唯一的记录。使用5分钟间隔仍将少于37,000行,对于一个维度而言,这是微不足道的。
选项2
如果要改用日期维度,请创建一个“计划的”事实,将显示维度与该将来日期的日期维度相关联。这将在您的ETL流程中处理以映射关系。您的日期维度应该已经包含星期和星期几的逻辑。您还可以利用“显示持续时间”属性来创建一个半累加的计算量度,以轻松获取该时期的总编程量。
我会选择选项2,因为它提供了更多的分析可能性。