1

与其他维度一样,让 OLAP 多维数据集的时间维度位于其自己的表中似乎是一种常见的做法。

我的问题是:为什么?

我根本看不出将一个time_dimension(int, timestamp)与某个time_id外键上的多维数据集连接起来有什么好处,而不是timestamp在多维数据集本身中有一个列。

原则上,时间点是不可变的和恒定的,它们是它们自己的价值。我发现人们不太可能想要更改给定的关联值time_id

此外,timestamp列类型为 4 字节宽(在 MySQL 中),int否则通常是键的类型,因此也不能节省空间。

在与我的同事讨论这个问题时,我能够提出的唯一有点明智的论点是与其他维度的一致性。但我觉得这个论点相当薄弱。

4

2 回答 2

3

我相信这通常是因为时间维度表包含许多列,例如周/月/年/季度,这允许更快的查询以获取特定季度的所有 X。

鉴于大多数 OLAP 多维数据集都是为了随着时间的推移而获取查询,这对我来说很有意义。

于 2009-12-03T12:28:14.413 回答
1

Paddy 是正确的,时间维度包含时间原语的有用“别名”。您可以捕获有关日期本身的有用信息,例如季度、国定假日等。您可以通过这种方式编写更快的查询,因为无需在查询中编写每个假期的代码。

于 2010-01-05T14:43:39.880 回答