使用现有日期时间字段计算事实表中的日期和时间键

时间:2011-06-01 10:32:09

标签: sql data-warehouse olap

我在事实表格中有日期时间字段,格式为MM / DD / YY HH:MM:SS(例如2/24/2009 11:18:47 AM),我有单独的日期和时间维度 表。我想问的是我如何使用日期时间字段在事实表中创建日期键和时间键,以便我可以加入 日期和时间维度。

有很多参考可以创建单独的日期和时间维度及其好处,但我找不到如何创建日期和时间键 在事实表中使用现有的日期时间字段。

我也听说过在事实表中设置日期时间字段有一定的好处。如果是这样,你会推荐什么,我应该有三个(日期键,时间键) 事实表中的日期时间字段。日期键和时间键是我必须拥有的,如果我有日期时间字段,我会担心事实表的大小 也在事实表中。

感谢大家给予的任何帮助。

1 个答案:

答案 0 :(得分:4)

您需要做的事情(如果我理解正确)是在Fact表中创建两个字段:kTime,kDate。

我们总是建议使用DimTime和DimDate的主键作为含义(这是一种特殊情况,通常Dim tables的主键没有任何意义)。所以例如在DimDate中,我们将kDate作为主键,其值格式为YYYYMMDD,以便您可以按kDate排序,并将它们按日期顺序排列。然后让DimTime表具有HHMM或HHMMSS形式的kTime主键(取决于您需要的分辨率。

最好将实际日期时间字段保留在事实表上,因为它允许SQL使用其内置日期/时间函数来进行子集化,但是如果使用有用的额外列扩展Dim表:DimDate(添加DayOfWeek,IsHoliday,DayNumber,MonthNumber,YearNumber等)和DimTime(HourNumber,MinuteNumber,IsWorkingTime),然后您可以非常简单地执行非常有趣的查询。

那么要回答你的问题,“如何使用现有的日期时间字段在事实表中创建日期和时间键?” ...当您将数据加载到事实表中时,请使用内置日期/时间用于创建单独的日期字段和时间字段。

这很大程度上取决于您在Fact表中预期的行数,这种方法会产生大量数据,但从数据仓库的角度来看,它最容易使用。

祝你好运!