我是维度建模的新手,它让我感到困惑。希望有人能帮助我理解它。我会说一个例子。我的班次表在
之下shift_date |shift_status|request_id|Hrs_worked
-----------------------------------------
09-01-2011|Filled |8899 |5.5
21-01-2011 |Cancelled |6677 |6
22-01-2011 |Filled |7766 |2.5
依此类推.. 这基本上是事实表将读取的表格。
我想创建一个时间维度表。我正在使用sql developer。所以我的问题是,我应该只包含shift_date列中包含的日期吗?或者我应该开发一个包含2011年每一天的脚本?我将进行分析,看看每个月取消了多少轮班,每季度填多少等等。如果有人能帮助我直观地了解时间维度,那就太棒了。
答案 0 :(得分:4)
首先,考虑调用此维度"日期"或"日历"而不是"时间"。 "时间"尺寸通常用于表示时间(小时,分钟等)。 "日期"维度通常用于分析每日级别的事件。当然,您可以在模型中使用它们。
考虑日期维度的方式:无论您的事实表如何,它都存在,并表示日历 - 标准或财务或两者。作为任何日历,它必须每天列出,没有任何差距。一个微妙的说明:存在许多类型的日历,但通常我们最常使用" solar Gregorian"日历。偶尔,这种假设不正确,您需要为不同类型的日历建模: Calendar Types
最后,您可能需要选择日历维度的日期范围。人们对此有不同的看法。我的方法是在事实表中最早记录的日期开始日历表,并在最新事实记录的日期结束。 替代方法是从第一次交易发生的一年的第一天开始,到最后一次交易的一年的最后一天结束。例如,如果您的事实表包含从2017-02-15到2018-04-10的记录,则您的日期表可以精确地跨越该范围,或者从2017-01-01到2018-12-31。
答案 1 :(得分:0)
你应该参加2011年的每一天,你可以存储多个属性,比如工作日,它是什么财政季度。你可以在运行时计算,但在很多情况下,最好预先计算。我可以想到在日期维度中包含所有日期的几个原因