构建简单的BI应用
1、要从业务数据出发设计数据仓库的结构,必须明确业务数据本身的结构,而业务数据的关系一般是基于关系数据库设计的范式。
数据仓库中的表的关系不受关系数据库设计范式的约束,但也要遵循一定的结构规范,如星形结构和雪花形结构即是这种类型
的规范。同事这也是数据仓库逻辑结构的两种类型。
2、在数据仓库的逻辑结构中,数据表可分为两类:一类是事实数据表(简称“事实表”),用来存储数据仓库中的实际数据,如存
储2007年的销售数据的表,即为事实表;另一类是维度数据表(简称“维度表”),如关于时间、促销手段和产品等分析要素的
表均为维度表;在实际的设计中,通常需要根据需求情况重新建立与原始数据不同的表结构。这主要是由于传统业务的数据库是
用来进行事务处理的(即OLTP),而数据仓库则是用来进行分析处理的(即OLAP),用途的不同决定了其结构的不同。
3、数据仓库也是一种数据库,其管理同样是通过数据库管理系统(DBMS)来进行的,因此数据仓库可以像普通的数据库一样进行创
建、修改和删除。当数据仓库的逻辑结构设计完后,就可以创建物理数据仓库了。
4、数据仓库的设计可以说是数据分析和商业智能的最基础的工作。良好的数据仓库结构设计是以后工作能顺利进行的保证。而数据仓
库中的数据则一般要经过“提取--转换--加载”的过程从原始业务数据中获得,这就是ETL过程。
设计和使用ETL
把数据从foodmart.mdb数据库中装载到foodmartsaleDW数据仓库中。需要用到SQL Server Integeration Services 服务,
即SSIS,起操作步骤如下:
(1)打开Bussiness Inteligence Development Studio 选择【文件】-->【新建】-->【项目】命令,弹出“新建项目”对话框,
展开“商业智能项目”,在“模板”窗格中,单击“Integration Service项目”,把项目命名为“foodmartsaleETL”.
(2) 选择【项目】-->【SSIS导入和导出向导】命令,这时会弹出SSIS导入和导出的向导的欢迎界面,单击【下一步】按钮。
(3) 在“选择数据源”窗口中“数据源”下拉列表框中选择Access数据源选项。然后在路径选择中选择此项目文件夹中的
foodmart2000.mdb文件。
(4) 在随即弹出的窗口中选择数据的导出目标,这里选择“SQL Native Client”,设置好服务器和登录信息后,选择foodmartsaleDW
数据仓库作为目标数据库,如果在以前的步骤中没有创建此数据库,可以在此窗口中单击“新建”按钮,在弹出的“创建数据库”窗口
中穿件此数据库,单击【下一步】按钮继续。
(5) 在弹出窗口中选择需要复制的是数据源的多个表和视图,还是自定义的查询,这里选择“复制一个或多个表或视图的数据”单选按钮;
单击【下一步】按钮继续。
(6) 这时会让用户选择数据源表和源视图,按照前面对数据库的设计,这里选择原始表中的time_by_day、promotion、product、
product_class、customer、sore和sale_fact_1998表作为需要输入的表。这里对原始表中需要导入到数据仓库的数据有很强的可
定制性,对这些已经选择的表中的字段可以进行筛选和改变,对不需要的字段进行去除操作,这就是所谓的数据清洗。当然也可以选择
其他表一起导入数据仓库中。可以看到,不一定所有的业务数据库中的数据都必须体现在数据仓库,数据仓库中的数据也有可能是经过
业务数据库中的数据运算而得到的,这都取决于具体的商务活动的需求。
在上面的界面中,还可以对数据导入的目标进行定制,可以对映射的方式进行编辑,甚至可以自己写“CREATE TABLE”语句作为复
制的目标表。这些改变都可以体现数据仓库的物理结构中。
这里不对映射及其目标进行变更,保持默认的状态,使生成的数据仓库的物理模型完全符合前面对数据仓库的逻辑模型的设计。
(7) 以上操作完成后,单击【下一步】按钮,系统将会把前面的操作列表并要求用户确认,并提示将会把包以“Package1.dtsx”作为文件名
保存在项目文件夹下面,而且不会立即执行,确认无误后单击【完成】按钮。
(8) 在“解决方案资源管理器”中展开“SSIS包”文件夹,在Package1.dtsx上单击鼠标右键,在弹出的快捷菜单中选择【设为启动对象】
命令。
(9) 单击工具条上的运行按钮运行这个工程,可以发现在SSIS设计界面的“控制流”和“数据流”等选项卡内都有对象在活动,这是系统正
在把数据从foodmart2000.mdb数据库中按照前面所确定的规则装载入foodmartsaleDW数据仓库中。
(10) 数据装载过程完成后,切换到SQL Server Management Studio,展开foodmartsaleDW数据仓库可以发现,已经按照设计要求建立
好了数据仓库,并且在数据仓库中已经存储了业务数据。
创建OLAP数据立方
设计好了结构良好的数据仓库,并且将需要分析的业务数据装载到了数据仓库中之后,就为满足商务决策的全方位需求打下了根基,以后的操作
都是基于这些拥有数据的数据仓库进行的。但是,对数据的多维分析却并不是主要针对数据仓库,而是针对从数据仓库中提取的子集,如数据集市和
多维数据集(也称为数据立方)。因此通常还需要在具体分析数据之前创建数据立方。
数据立方的创建和管理需要用到SQL Server 2005 中的 Business Intelligence Development Studio 的 Analysis Services 组件,即SSAS。
首先要创建一个SSAS的项目。打开Business Intelligence Development Studio ,选择【文件】-->【新建】-->【项目】命令,或按【ctrl+
shift+N】组合键以显示“新建项目”对话框。从“Visual Studio 已安装的模板”选项组中选择“Analysis Services 项目”。在“名称”文本框中
输入“foodmartsaleAS”作为项目名称。单击【确定】按钮进入SSAS的工作界面。
打开“解决方案资源管理器”,可以看到数据源、数据源视图、多维数据集、维度和挖掘结构等8个文件夹对象,建立和管理数据立方也是主要针
对这8个对象进行的。下面介绍创建数据立方的步骤:
1、定义数据源
在“解决方案资源管理器”中的“数据源”文件夹上单击右键,选择【新建数据源】命令。
在弹出的“选择如何定义连接”窗口中选择“基于现有连接或新链接创建数据源”单选按钮,在“数据连接”列表框中选择foodmartsaleDW
数据仓库的连接,由于向导下面的操作是没有必要的,所以这里单击完成。
2、定义数据源视图
数据源提供与数据库的简单连接,但是更多高级功能,如缓存元数据、添加关系、创建计算和设置逻辑键等还需要使用数据源视图来完成。为了
对多维数据集进行这些高级操作,这一步定义数据源视图。
可以在“数据源视图”文件夹对象上单击鼠标右键,选择【新建数据源视图】命令,然后在弹出的“数据视图向导窗口”中选择foodmartsaleDW
选项作为关系数据源,单击【下一步】,这是会弹出“名称匹配”窗口,其原因是在前面的SSIS的数据装载操作中没有为数据仓库中的表设置主键及其
关系,SSAS视图在匹配列上创建逻辑关系,可以选择“与主键同名”单选按钮,单击【下一步】按钮继续。
这时进入“选择表和视图”窗口。可以从选定的数据源提供对象列表中选择表和视图。这里主要的商务需求是对销售数据进行分析,所以可以把相关
的数据表都选入数据源视图,退数据源中与分析需求关联不大的要素也可以不选入此视图。
以上操作完成后,单击【下一步】,为此数据源视图命名为Vfoodmartsale,再单击【完成】结束次向导。
同样也是由于数据源中的表没有设置主键的原因,现在打开数据源视图上的表都是独立的,相互之间没有关系,还需要我们设置各个表的主键及其关系
才能成为可用的视图。一般来说,事实表是没有主键的,而维度表都有主键,且每一个维度表的主键都是事实表的外键,因而,需要为每个维度表设置主键。
在维度表中,选择应该为主键的字段,然后右键,选择【设置逻辑主键】命令,即可设置维度表的主键。
对每一个维度表设置好主键后,应该设置维度表和事实表之间的关系,方法是包事实表中的外键作为源,拖动到维度表中的相关字段,这时会弹出“创建
关系”窗口;需要注意的是一定要把外键表作为源,主键表作为目的,如果方向错了,可以单击【反向】按钮以保证其关系符合业务数据中的逻辑关系。
3、生成多维数据集
这一步是在上面创建的数据视图的基础上生成的多维数据集,方法如下
1)在“解决方案资源管理器”中,右键“多维数据集”文件夹对象,选择【新建多维数据集】命令。
2)在弹出的“多维数据集向导”界面中单击【下一步】,进入“选择生成方法”窗口。在此窗口中选择“创建属性和层次结构”选项,以便向导能为维度
表中的大多数列创建属性,并尝试包含多级的层次结构。
在这一步可以发现,生成多维数据集可以暂时不用急于数据源,这实际代表了数据立方的两种创建方法。
3)单击【下一步】按钮,选择前面创建的数据源视图来为多维数据集提供数据,再单击【下一步】,向导将扫描关系架构,以识别事实表和维度表,识别
完成后,单击【下一步】,会弹出“标识事实数据表和维度表”窗口,选择“time_by_day”作为时间维度表,并设置各表为事实表或是维度表。设置
好后,点【下一步】按钮继续。
4) 由于上一步选择了“time_by_day”作为时间纬度表,这一步需要设置时间纬度的层次结构。在所有纬度的层次结构中,只有时间纬度表最为特殊。其他
纬度系统可以根据数据之间的关系检测其层次结构,而时间纬度则需要指定其时间上的层次;这里为年月日属性指定时间表列。设置好后点【下一步】。
5)这时系统将会让用户选择度量值。度量值是来源于事实表中的数据。如这里选择“Store Sales”、“Store Cost”和“Unit Sales”为度量,
【下一步】
6)这时系统将会依据前面对维度表和事实表的设置来检测层次结构,如果前面的设置都是正确的,则会成功检测其层次结构,检测完毕,点【下一步】。
7)由于前面系统自动检测了维度之间的层次关系,因此,产生了一些新的维度,这一步向导提供了一个窗口来查看新建维度的结构并根据需要进行更改。
可见,由程序自动分析出来的层次结构和用户自己设置的时间层次结构都是和业务数据中的逻辑结构相符合的。如果不符合,则可以在一步进行修改。
设置完成后单击【下一步】,为多维数据集指定ige名称,再单击【完成】,结束多维数据集的创建向导。
8)完成向导,可以查看建立的多维数据集结构。这里的视图表达的是多维数据集的表间关系,而且黄色标记了事实表,蓝色标记了维度表。
9)双击刚才创建的多维数据集,系统将会切换到多维数据集设计窗口,该窗口标识了可以针对多维数据集进行的各种操作,包括添加各种商业智能功能
和数据展示。
10)这一步将把创建号的多维数据集部署到 Analysis Servics 数据库中,在多维数据集上右键,选择【处理】命令,在“是否生成和部署项目”的对话
框中选择“是”。待部署结束,系统将会弹出“处理多维数据集”对话框,单击【运行】,程序将会对多维数据集进行处理,处理完毕后,在“处理
进度”对话框中单击【关闭】按钮结束处理过程。如果以上操作顺利进行,则此多维数据集已经顺利的部署到了Analysis Services 数据库。
打开 SQL Server Management Studio,在对象资源管理器中的连接下了拉菜单中选择【Analysis Services 】命令,输入认证信息,即可进入
“Analysis Services ”。