请联系我们

Project REAL分析服务技术探讨

来源: 数据库 SQL Server |  作者: landluo |  发布: 2009-7-08 10:09


图10表示我们如何在Store Sales部分改变错误配置。

图10:改变错误配置设置

图11表示当一个查询使用系统未知成员的时候,看上去是什么样的。

图11:查询中的系统生成的未知成员

时间智能向导

过去当需要使用时间智能向导来创建新的时间维度时,我们遇到了一些挑战。SQL Server 2005 的分析服务(Analysis Services)是服务器端时间维度(dimension)。虽然,由于其容易使用的特性(只需点击几下就能得到时间维度),使用服务器端时间维度是很有诱惑力的,但我们并不推荐这种方法作为通用的实践方法。

最佳实践:可能创建单机时间维度表的地方

在处理复杂的时间情形时,拥有一张时间维度表会给你更好的伸缩性。

◆你能添加你自己的时间属性。例如,将某天指向周末还是普通的日子?某天时公司假日么?某天时季节内还是季节外?某天是在圣诞假期内么(对于很多零售商很重要)?

◆很容易标识和构建多重层次。例如,当两个公司合并的时候,新合并的公司需要运行两个不同的财务日历(每个对应一个公司)。

◆能够构建与众不同的层次。例如,一个公司的制造月总是从日历月的第一个周一开始,这可能会有一个与众不同的工作日编号系统。

◆在复杂情形下,业务模型可能要求完整的级别跳跃。例如,一个专门的日历可能有年、周、日;或者它可能只有年和日。

◆有可能根据需要来计算增加的成员。例如,一个代表逻辑上“今天”的值。在一些公司,预定结束日取决于客户的反馈数据。数据每天都在变,但公司需要一个逻辑上的今天,以至于它能够在预定结束前冻结预定。

◆一般情况下,我们建议在你的关系型设计中,在实体之间使用代理键(surrogate keys),作为最好的实践。然而,这也是这个实践可能没有意义的地方所在。如果你已经使用了一个时间戳或者其它时间的表示方法(例如,用整数20050321表示2005年3月21日),可能继续使用这种技术更有意义。在这个例子中有两点需要考虑。首先,确认你正在使用一个日期戳而不是日期时间戳(将时间从你的外部键中移去)。第二,你可以使用SQL Server RDBMS DATEPART 函数自动的从日期戳构建外部键值。

◆如果你的应用程序需要一个比日更加深入的细节,可以考虑将时间分成两个维度。一个维度记录到日为止的时间,另外一个维度记录日中的时间。

例如,你向跟踪没分钟的产品销售情况。乍看,你可能会创建一个如下所示的用户定义层次的维度。


* 部分内容来源于网络,版权属原作者所有,转载请注明来源。
打印 | 收藏此页 |  推荐给好友 | 举报