Project REAL分析服务技术探讨(2)
2007-05-15 09:28:18 来源:WEB开发网核心提示: 图3:为Month列和Year列指定一个键集合让我们看看在这些变化前后发生了什么变化,图4表示表示了当你使用的是没有唯一性约束的Quarter、Month和Week时,Project REAL分析服务技术探讨(2)(6),Project REAL的Time.Calendar的层次是什么样的
图3:为Month列和Year列指定一个键集合
让我们看看在这些变化前后发生了什么变化。
图4表示表示了当你使用的是没有唯一性约束的Quarter、Month和Week时,Project REAL的Time.Calendar的层次是什么样的。在下面的RDBMS中,键的范围分别是(1…4)、(1…12)、(1…52)。问题在于,在整个维度中,这些键值不是唯一的。例如,你如何区别2001年1月和2002年1月;或者如何区别2003年Q2季度和2004年Q2季度?为了使得键是唯一的,你需要用Year创建一个链接键。因此,Quarter的键应该是(Year,Quarter);Month的键应该是(Year, Month);Week的键应该是(Year, Week)。在这种情况下,我们没有创建链接键。你可以看到如图4所示的结果:年没有季节;在年中错误的季节;以及其它不准确的结果。
图4:设置唯一性之前的时间维度
图5展示了当我们给Quarter、Month和Week键分别加上Calendar_Year_ID链接键后成为键集合的情况。现在的结果是正确的。
图5:设置键唯一性之后的时间维度(通过创建键集合)
考虑一下对话框中行的数目也是一件有趣的事情。在我们用Year创建链接键之前,Month属性层次返回了13条记录。这就是当我们根据一个未知成员的月键,使用SELECT DISTINCT,你期望得到的结果。当我们添加了Year链接键后,新的处理会返回219条记录,因为SELECT DISTINCT语句中包括了年。
赞助商链接