2.3 创建OLAP数据立方
设计好了结构良好的数据仓库,并且将需要分析的业务数据装载到了数据仓库中之后,就为满足商务决策的全方位需求打下了根基,以后的操作都是基于这些拥有数据的数据仓库进行的。但是,对数据的多维分析却并不是主要针对数据仓库,而是针对从数据仓库中提取的子集,如数据集市和多维数据集(也称为数据立方)。因此通常还需要在具体分析数据之前创建数据立方。
数据立方的创建和管理需要用到SQL Server 2005中Business Intelligence Development Studio的Analysis Services组件,即SSAS。
这里将创建用于福马特商店销售分析的数据立方,首先要创建一个SSAS的项目。打开Business Intelligence Development Studio,选择【文件】→【新建】→【项目】命令,或按【Ctrl+Shift+N】组合键以显示“新建项目”对话框。在“新建项目”对话框中,从“项目类型”选项组中选择“商业智能项目”。从“Visual Studio已安装的模板”选项组中选择“Analysis Services项目”。在“名称”文本框中输入“foodmartsaleAS”作为项目名称,如图2-10所示。单击【确定】按钮进入SSAS的工作界面。
图2-10 建立foodmartsaleAS项目
打开“解决方案资源管理器”,可以看到数据源、数据源视图、多维数据集、维度和挖掘结构等8个文件夹对象,建立和管理数据立方也是主要针对这8个对象进行的。下面介绍创建数据立方的步骤。
2.3.1 定义数据源
这是创建数据立方的第1步。在“解决方案资源管理器”中的“数据源”文件夹上单击鼠标右键,在弹出的快捷菜单中选择【新建数据源】命令,如图2-11所示。
图2-11 新建数据源
在弹出的“选择如何定义连接”窗口中选择“基于现有连接或新连接创建数据源”单选按钮,在“数据连接”列表框中选择foodmartsaleDW数据源,如果没有此连接,可以单击【新建】按钮,定义指向foodmartsaleDW数据仓库的连接。设置完成后的页面如图2-12所示。由于向导下面的操作是没有必要的,所以这里可以直接单击【完成】按钮结束数据源向导。
图2-12 定义数据连接
2.3.2 定义数据源视图
数据源提供与数据库的简单连接,但更多高级功能,如缓存元数据、添加关系、创建计算和设置逻辑键等还需要使用数据源视图来完成。为了对多维数据集进行这些高级操作,这一步定义数据源视图。
可以在“数据源视图”文件夹对象上单击鼠标右键,在弹出的快捷菜单中选择【新建数据源视图】命令,然后在弹出的“数据源视图向导”窗口中选择foodmartsaleDW选项作为关系数据源,单击【下一步】按钮。这时会弹出如图2-13所示的“名称匹配”窗口,其原因是在前面SSIS的数据装载操作中没有为数据仓库中的表设置主键及其关系,SSAS试图在匹配的列上创建逻辑关系,可以选择“与主键同名”单选按钮,单击【下一步】按钮继续。
图2-13 设置名称匹配
这时进入“选择表和视图”窗口,如图2-14所示。可以从选定的数据源提供的对象列表中选择表和视图。这里主要的商务需求是对销售数据进行分析,所以可以把相关的数据表都选入数据源视图,对数据源中与分析需求关联不大的要素也可以不选入此分析视图,例如此处的region表可以不用选入数据源视图。
以上操作完成后,单击【下一步】按钮,为此数据源视图命名为Vfoodmartsale,再单击【完成】按钮结束此向导。
图2-14 选择表和视图
同样也是由于数据源中的表没有设置主键的原因,现在打开的数据源视图上的表都是独立的,相互之间没有关系,还需要我们设置各个表的主键及其关系才能成为可用的视图。一般来说,事实表是没有主键的,而维度表都有主键,且每一个维度表的主键都是事实表的外键,因而,需要为每一个维度表设置主键,如图2-15所示,在维度表中选择应该为主键的字段,然后单击鼠标右键,在弹出的快捷菜单中选择【设置逻辑主键】命令,即可设置维度表的主键。
图2-15 设置维度表的主键
对每一个维度表设置好主键后,应该设置维度表和事实表之间的关系,方法是把事实表中的外键作为源,拖动到维度表中的相关字段,这时会弹出“创建关系”窗口,如图2-16所示。需要注意的是一定要把外键表作为源,主键表作为目标,如果方向错了,可以单击图2-16的【反向】按钮以保证其关系符合业务数据中的逻辑关系。
图2-16 “创建关系”对话框
按照以上的步骤,设置好维度表和事实表之间的关系后,数据源视图将会如图2-17所示。
图2-17 设置好表间关系后的数据源视图
2.3.3 生成多维数据集
这一步在上面创建的数据源视图的基础上生成多维数据集,方法如下。
(1)在“解决方案资源管理器”中用鼠标右键单击“多维数据集”文件夹对象,在弹出的快捷菜单中选择【新建多维数据集】命令。
(2)在弹出的“多维数据集向导”欢迎界面中单击【下一步】按钮进入“选择生成方法”窗口,如图2-18所示。在此窗口中选择“使用数据源生成多维数据集”单选按钮,并且确认选中了“自动生成”复选框,并在下拉列表框中选择“创建属性和层次结构”选项,以便向导能为维度表中的大多数列创建属性,并尝试建立包含多级的层次结构。
图2-18 “选择生成方法”窗口
在这一步可以发现,生成多维数据集可以暂时不用基于数据源,这实际代表了数据立方的两种创建方法。关于它们之间的区别和联系,将在第5章中讲解。
(3)单击【下一步】按钮,选择前面创建的数据源视图来为多维数据集提供数据。再单击【下一步】按钮,向导将扫描关系架构,以识别事实表和维度表。识别完成后,单击【下一步】按钮将会弹出如图2-19所示的“标识事实数据表和维度表”窗口。选择“time_by_day”作为时间维度表,并且按照图中所示来分别设置各表为事实表或是维度表。设置好后单击【下一步】按钮继续。
图2-19 标识事实数据表和维度表
(4)由于上一步选择了“time_by_day”作为时间维度表,这一步需要设置时间维度的层次结构。在所有维度的层次结构中,只有时间维度最为特殊。其他维度系统可以根据数据之间的关系检测其层次结构,而时间维度则需要指定其时间上的层次。如图2-20所示,依据时间表中的具体情况,为年月日等时间属性指定时间表列。设置好后单击【下一步】按钮继续。
图2-20 指定时间维度层次结构
(5)这时系统将会让用户选择度量值,如图2-21所示。度量是来源于事实表中的数据,在图中选择“Store Sales”、“Store Cost”和“Unit Sales”为度量。单击【下一步】按钮继续。
图2-21 选择度量值
(6)这时系统将会依据前面对维度表和事实表的设置来检测层次结构。如果前面的设置都是正确的,则会成功检测其层次结构,检测完毕,单击【下一步】按钮继续。
(7)由于前面系统自动检测了维度之间的层次关系,因此,产生了一些新的维度,这一步向导将提供一个窗口来查看新建维度的结构并根据需要进行更改。此例中的新建维度结构关系如图2-22所示。可见,由程序自动分析出来的层次结构和用户自己设置的时间层次结构都是和业务数据中的逻辑结构相符合的。如果不符合,则可以在这一步进行修改。设置完成后单击【下一步】按钮,为多维数据集指定一个名称,再单击【完成】按钮,结束多维数据集的创建向导。
图2-22 维度层次结构关系
(8)完成向导后,可以查看建立的多维数据集结构,如图2-23所示为多维数据集的数据源视图,与2.3.2节的数据源视图相比较,这里的视图表达的是多维数据集的表间关系,而且用黄色标记了事实表,蓝色标记了维度表。
图2-23 多维数据集的数据源视图
(9)双击刚才创建的多维数据集,系统将会切换到多维数据集设计窗口,如图2-24所示的是该窗口的主要标签,它们标识了可以针对多维数据集进行的各种操作,包括添加各种商业智能功能和数据展示等。这些功能将在第5章中讲解。
图2-24 多维数据集设计界面的主要标签
(10)这一步将把创建好的多维数据集部署到Analysis Services数据库中,如图2-25所示,在多维数据集上单击鼠标右键,在弹出的快捷菜单中选择【处理】命令,在“是否生成和部署项目”的对话框中选择“是”选项。待部署结束,系统将会弹出“处理多维数据集”对话框,单击【运行】按钮,程序将会对多维数据集进行处理,处理完毕后,在“处理进度”对话框中单击【关闭】按钮结束处理过程。如果以上操作都顺利进行,则此多维数据集已经顺利地部署到了Analysis Services数据库。打开SQL Server Management Studio,在对象资源管理器中的连接下拉菜单中选择【Analysis Services】命令,如图2-26所示。输入相应的认证信息,即可进入Analysis Services,如果部署成功,则会有如图2-27所示的界面。
图2-25 处理多维数据集
图2-26 连接Analysis Services
图2-27 成功部署多维数据集后Analysis Services的界面