日期:2014-05-16  浏览次数:20382 次

使用分析服务多维模式建立简单的分析模型

多维数据集是一种特殊的数据库,按照默认的模式(MOLAP),它把数据仓库里事实表和维度表的数据经过聚合存储在另外一套独立的文件系统中。经过聚合的数据在统计性能上会得到提升,并且可以让用户通过很简单的前端工具,比如Excel来生成很简单的报表。

这里将介绍如何制作一个简单的多维数据集。

此篇使用的版本是SQL Server 2012,对应的Visual Studio Shell是2010,名称也改为SQL Data Tools。

 

首先,打开SQL Data Tools,点击File->New->Project…

接下来会打开新建项目窗口。这个界面可能对于很多c#开发人员再数据不过,这里可以告诉你,SQL Server BI下很多项目都是在这下面建立的,比如,数据集成项目,它主要负责BI项目中的ETL过程(数据的清洗转换和加载),还有报表服务项目,很多BI项目的报表都是通过这个项目模版实现的。自从微软.net战略之后,很多开发基本都是在Visual Studio进行的。这里就是一个具体的体现。

在左面项目模版中选择Analysis Services,然后选择Analysis Services Multidimensional and Data Mining Project。

在这里我们可以看到在最新的版本中还提供了另外一种分析服务项目模版,就是Analysis Services Tabular Project,关于这个新特性,可以参考我的另外一篇随笔:

使用SQL Server Analysis Services Tabular Model建立分析模型

Tabular Model的最终产出结果跟多维数据集差不多,只不过它更面向于业务人员和开发人员之间的用户,而本文提及的多维数据集是定位在开发人员之上的。

另外,留意一下项目类型的Data Mining,意思就是在这个项目下,也可以建立数据挖掘项目,关于如何玩转这个功能,请参考我的另外一篇随笔:

使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能

接下来,我们看一下项目的结构:

可以看到项目包含几个文件夹。

第一个是数据源,这里定义SSAS数据库要连接的是哪个数据源,通常来说就是数据仓库所在的位置。

第二个是数据源视图,里面定义了多维数据集需要的各种表,事实表和维度表。

Cubes里面定义数据立方体,也就是我们所说的多维数据集。

Dimensions文件夹里定义了维度,这里可以理解为维度的一个抽象,比如时间维度,在具体的一个立方体里可能对应的就是比如"开始时间"或者"结束时间"这样的泛化维度。

挖掘结构,里面是跟数据挖掘相关的。

角色,里面定义多维数据库的安全信息。

了解完以上项目里的文件夹后,下面开始一步一步建立一个简单的多维数据集。

首先,右键Data Sources文件夹,点击New Data Source…。

接下来出现数据源向导界面。

点击界面中的New新建一个连接。留意左面的Data Connections界面,里面会列出你以前用过的数据连接。

服务器名称选择本地,敲一个点就可以,然后数据库选择AdventureWorksDW2012。

AdventureWorks是微软提供的数据库示例,里面包含了业务数据库(上图中不带DW字样的)以及数据仓库示例(刚才选择的)。此外还包含很多跟SQLServer的其它示例,关于如何获取并且部署这些项目,可以参考我的这篇随笔:

微软SQLServer官方示例项目部署-数据引擎和分析服务部分

设置好连接属性后,点击下一步。

这里要面设置模拟信息。这里手动指定用户,使用你登陆机器的管理员账号就可以。当然实际生产环境中不建议这么做。

指定好模拟信息后,点击下一步。

给数据源起一个名字,点击完成。接下来就可以看到在数据源文件夹下生成了一个ds后缀的数据源文件。

下面,右键数据源视图文件夹,点击New Data Source View…。

在数据源视图中距中,在左面可以看到刚才建立的数据源连接,选中它,点击下一步。

这一步会列出数据源连接下的表和视图。

这里我们建立一个简单的多维数据集,从左面可用对象列表里依次选择FactInternetSales,DimCustomer,DimDate,DimGeography,DimProduct,DimProductCategory和DimProductSbcategory到右面的列表中,然后点击下一步。

给数据源视图起一个名字,然后点击完成。

然后在数据源视图中,可以看到刚刚选中的事实表和维度表。

可以看到在微软提供的示例中,已经定义好了表间关系。在实际的项目中,我也这些关系要定义好,尽管很多项目都不太情愿这么做,并且确实也会带来一些麻烦,但这绝对是一个好的习惯和规范。

此外,在这个界面中也可以定义命名查询,或者在表里添加一些计算列。

确认完毕数据源视图之后,开始创建多维数据集。右键Cubes文件夹,选择New Cube…。

选择第一项使用已经存在的表。

多维数据集在SQL Server 2005之后,支持正向和逆向的方式创建多维数据集。通常来说是现有数据仓库然后再有多维数据集,但是通过这个特性,可以先建立多维数据集,然后再根据多维数据集的结构反向生成数据仓库里的表。通常来说后面的方法用的比较少。

点击下一步。

选择事实表FactInternetSales,点击下一步。系统往往不能正确的事别你得事实表和维度表,所以每次到这里都建议检查一下勾选的事实表是否正确。

点击下一步。

指定多维数据集里的度量值,这些都是从事实表中来,所以像Promotion Key等这些键值字段拿来统计是没有意义的,取消掉。还有需要留意系统会在最下面加入一个Count字段,在项目中可以根据Shijiazhuang情况来考虑是否要加入这个字段。

点击下一步,开始确认多维数据集的维度。

这里暂时不需要更改任何内容,因为会在接下来的步骤中进行维度的详细设计。这里直接点击下一步。

最后,给多维数据集取一个名字,并且在预览区域中检查