一尘不染

与直接存储日期相比,使用日期维度表有什么优势?

sql

我需要存储相当大的数据历史记录。我一直在研究存储此类档案的最佳方法。看来,数据仓库方法是我需要解决的问题。强烈建议使用日期维度表,而不要使用日期本身。谁能向我解释为什么单独使用一张桌子会更好?我不需要汇总任何数据,只需在过去的任何一天中快速高效地访问它们即可。我确定我丢失了一些东西,但是我看不到将日期存储在单独的表中比将日期存储在存档中有什么好处。


阅读 181

收藏
2021-05-23

共1个答案

一尘不染

好吧,一个好处是,作为一个维度,您可以在其他表中存储日期的许多其他属性-
是假期,是工作日,是哪个财政季度,特定日期的UTC偏移量是多少?您可以在运行时进行计算,但是在很多情况下,最好(或仅可能)进行预先计算。

另一个是,如果您仅将DATE存储在表中,则只有一个选项可以指示缺少的日期(NULL),或者您需要开始制作无意义的令牌日期(例如1900-01-01)来表示一件事(因为(不知道)和1899-12-31来表示另一个(由于任务仍在运行,此人仍在世等而丢失)。如果使用维度,则可以有多行代表DATE未知/缺失的特定原因,而没有任何“魔术”值。

就个人而言,我宁愿只存储DATE,因为它比INT(!)小,并且保留了各种与日期相关的属性,执行日期数学运算的能力等。如果缺少日期的原因很重要,我总是可以在表中添加一列来表明这一点。但是我正在回答别人的数据仓库问题。

2021-05-23