搭建OLAP系统新方法

来源:互联网 发布:今年双11淘宝交易额 编辑:程序博客网 时间:2024/06/07 00:41

微软在2005年推出了历时5年开发的SQL Server 2005。那么SQL Server 2005究竟给我们带来了什么?

本文将介绍它在商业智能领域内的一项质的飞跃――搭建OLAP系统新方法。

在SQL Server 2000中,如果我们想去开发一套OLAP系统,我们必须按照下面这种方法来进行:

由下至上方法――从现有的关系数据库开始,创建一个基于关系数据库架构的数据源视图,然后使用 SQL Server设计工具和向导创建基于该数据源视图的 Analysis Services 维度和多维数据集(如图)。


在这种开发方法中,我们首先需要创建数据仓库,在这个数据仓库中将会包括维度表和事实表。接下来我们会按照数据仓库来创建我们的维度和多维数据集(Cube)。在这些都完成之后,我们就可以向数据仓库中加载我们的测试数据,然后再处理我们的多维数据集,最后,我们会通过前端展现工具(如Proclarity、Excel等)对我们的多维数据集进行展现。

这时,问题出现了。我们往往在利用前端展现工具测试我们的多维数据集的时候,会发现我们的多维数据集构建的不够理想,我们在构建数据仓库的时候,经常会有很多因素没有考虑进去,导致我们最后展现的结果不正确,然而这些因素只有在最后展现的时候才能够发现。

我们怎么办?

在传统的开发方法中,我们只能去修改我们的数据仓库,然后再根据修改后的数据仓库来修改维度和多维数据集,有的时候甚至需要重新创建维度和多维数据集。修改之后,我们再利用前端展示工具对多维数据集进行展现,往往我们又会有新的问题出现,我们不得不再次重复这个过程。

如此往复下去,可想而知,我们的工作量有多么大。

在SQL Server 2005中,它提供给我们一种全新的创建OLAP系统的方法,这种方法不仅可以大幅度的降低我们的工作量,同时,对于创建一个标准的多维数据集与标准的数据仓库也有很大帮助。

由上而下的方法――首先使用 SQL Server 设计工具和向导设计 Analysis Services 维度和多维数据集,然后使用架构生成向导生成基于这些维度和多维数据集的数据源视图和基础关系数据库架构。该关系数据库称为主题区域数据库(如图)。


那么,我们就来详细讲解一下这种全新的创建OLAP系统的方法。

在这种新的方法中,我们不再按照传统的方法先去创建数据仓库,而是直接去创建多维数据集。在SQL Server 2005中,我们完全可以在不依赖于任何数据源的情况下,来创建我们心目中的多维数据集,我们可以在创建多维数据集的同时指定它包括的维度、量度、计算成员、KPI以及透视图等等,同时我们也可以设置它们的属性。

在我们将所有的维度、量度等创建完成之后,你一定会想,我们的数据仓库怎么办?

SQL Server 2005提供了一个非常强大的功能――生成关系架构向导。生成关系架构向导可以按照我们所设置的多维数据集中的维度和量度,自动为我们生成数据仓库,生成数据仓库之后我们就可以加载我们的测试数据了,然后再来处理多维数据集,最后我们就可以利用前端展现工具对我们的多维数据集进行展现。

这时,我们同样会发现多维数据集的设计存在问题,那么我们就不必去修改我们的数据仓库了,而可以直接来修改多维数据集,包括维度及量度等。修改之后,我们还可以利用生成关系架构向导来重新生成数据仓库,并且在生成数据仓库的时候,我们可以保留以前的测试数据,而不必重新加载。如此往复下去,直到我们的多维数据集完全正确。

这种方法将我们传统的同时修改数据仓库和多维数据集变为只修改多维数据集一部分,这样就减少了我们的工作量。整个搭建流程的改变主要依据于SQL Server 2005提供的生成关系架构向导。

生成关系架构向导主要提供了以下几项功能:

1.       指定架构所有者

您可以通过将“所属架构”的值设置为有效字符串来指定架构的所有者。架构的默认所有者为 Analysis Services 项目,但是您可以按照需要任意指定架构所有者。

2.       验证

在架构生成向导开始生成基础对象之前,它会验证 Analysis Services 多维数据集和维度。如果该向导检测到错误,它便会停止并将错误报告到 Business Intelligence Development Studio 中的“任务列表”窗口。这样,系统可以为我们检测到多维数据集在设计时存在的错误,降低系统开发的重复次数。

3.       创建维度表主键

架构生成向导会默认在主题区域数据库内的每个维度表中创建主键约束。主键与指定为相应 Analysis Services维度中的键属性相对应。此约束以最小的开销提高了多数环境中的处理性能。

4.       创建索引

该向导会默认创建每个事实数据表中各外键列的索引。这些索引提高了多数环境中的处理性能。性能通常提高的原因是 Analysis Services 生成的用来从主题区域数据库中检索新数据的处理查询通常在事实数据表和维度表之间包含大量联接语句。

5.       强制引用完整性

向导会默认在事实数据表和每个维度表之间强制实施引用完整性。引用完整性可以提高数据处理时的准确性,同时可以避免事实表更新对维度表的影响。

6.       重新生成时保留数据

架构生成向导会默认在重新生成数据库架构时尝试保留数据。如果架构生成向导因架构更改而必须删除一些行,则您会在删除行之前收到一则警告。例如,由于您删除了维度,或者数据类型在更改维度属性时发生更改,那么行可能必须被删除以解决引用完整性问题。

7.       指定命名约定

架构生成向导会自动为我们创建所有在多维数据集中需要使用的字段,使用“指定命名约定”页,可以定义在创建架构对象时架构生成向导所使用的字段的命名约定。

选项

说明

分隔符

指定用于分隔对象名称中的字词的字符。在“值”列中,选择“下划线”、“空格”或“无”。默认值为“下划线”。

主键列前缀

指定每个主键列名称的前缀字符串。默认值为 PK。

外键列前缀

指定每个外键列名称的前缀字符串。默认值为 FK。

属性名称后缀

指定追加到每个属性列名称的字符串。默认值为 Name。

自定义汇总后缀

指定追加到每个汇总列名称的字符串。默认值为 CustomRollup。

自定义汇总属性后缀

指定追加到每个汇总属性列名称的字符串。默认值为 CustomRollupProperties。

一元运算符后缀

指定追加到每个一元运算符列名称的字符串。默认值为 UnaryOperator

8.       填充时间表

每一个多维数据集几乎都会有时间维度,然而如何创建一个标准的时间维度却是非常困难的。

利用架构生成向导,我们可以自动生成一个标准的时间维度和相对应的层次结构。我们只需要设置时间维度中所包括的层次、以及开始和结束的时间(如下图)就可以了。向导在创建时间维度表的同时也会向其中填入相应的数据。


9.       自动创建缓慢变化维度

在SQL Server 2005中,缓慢变化维度是一项非常强大的功能,但是如果手工创建缓慢变化维度的维度表将是非常困难的。而架构生成向导可以自动为我们创建缓慢变化维度的复杂的维度表,我们只需要在维度属性中去指定它的属性,系统会自动在维度表中增加时间戳字段(原始ID、状态、开始日期和结束日期)。

10.     翻译

向导会生成一个单独的表以保存需要翻译列的任意属性的翻译值。向导还会为每种所需的语言创建一个单独的列。

比较两种方法,我们不难发现,第二种方法不仅可以大幅度的减少我们的工作量,同时也提供了更加强大的功能,让我们可以非常轻松的创建出一个标准的多维数据集。这也是SQL Server 2005推荐我们使用的创建OLAP系统的方法。