似乎通常的做法是让OLAP多维数据集的时间维度与其他维度一样位于自己的表中。
我的问题是:为什么?
我根本看不出有一个time_dimension
(int, timestamp)
表与一些time_id
外键上的多维数据集连接,而不是{多维数据集本身的{1}}列。
主要是,时间点是不可变的和不变的,它们是它们自己的价值。我发现很可能不想更改给定timestamp
的相关值。
此外,time_id
列类型为4字节宽(在MySQL中),timestamp
类型通常也是键,因此也不能节省空间。
在与同事讨论这个问题时,我能够提出的唯一合情合理的论点是与其他方面的一致性。但我发现这个论点相当薄弱。
答案 0 :(得分:3)
我认为通常是因为时间维度表包含许多列,例如周/月/年/季度,这样可以更快地查询特定季度的所有X.
鉴于大多数OLAP多维数据集都是为了获取查询而编写的,这对我来说很有意义。
答案 1 :(得分:1)
Paddy是正确的,时间维度包含时间原语的有用“别名”。您可以捕获有关日期本身的有用信息,例如季度,国定假日等。您可以通过这种方式编写更快的查询,因为您无需在查询中对每个假日进行编码。