《分析服务从入门到精通读书笔记》第四章、创建维度概念篇(1)
目标
在第一章中,我们通过向数值添加包含属性和层次结构的维度,可以将数据转化为信息。对数值而言,维度增加了上下文的语境和意义。这是维度数据库所带来的主要好处之一。在第二章中,我们知道可以在SQL Server中创建维度数据库,并能利用其中的数据,在分析服务中创建多维OLAP数据库。在第三章解释了如何在关系型数据库和分析服务之间建立连接。还说明了如何指定包含了希望载入分析服务维度和多维数据集的数据的关系型数据库表。
在本章中,我们将使用一个已包含数据源和数据源视图的分析服务项目。数据源视图引用的数据集市中的维度表。我们将创建基于此修改属性和浏览数据。我们将通过创建3种不同类型的维度(标准、时间和父子维度)来熟悉设计维度的一些可用的选项。
内容
在创建服务维度之前,我们需要熟悉维度中所包含的数据,并且能够熟悉里面的逻辑关系,也就是我们这篇文章所讲述的的预览维度数据。
我们在设计维度之前,最重要的就是彻底的理解数据源,查看并熟悉数据,同时要理解数据如何与组织的运行联系起来。找到错误或丢失的数据,不要相信那些告诉你数据是准确无误的人,我们要以眼见为实的,有的数据可能比其他的数据稍正确些,但总能找到数据存在的问题。发现存在于数据库中的层次关系。还要知道一个表中数据如何同其他表中的数据联系起来,以及这种关系是否由外键强制形成的。同时也要决定数据在载入维度以前,是否需要进行转换。
我们一般使用数据源视图设计器来浏览维度数据。数据源视图设计器使用网格、图表、透视表或透视视图来查看表中的数据。
1、解决方案中,展开“数据源视图”文件夹中,找到MyAdventure Works DW.dsv,然后选择“视图设计器”
2、在“关系图组织程序”中,找到“myRelativeImg”关系图
这里面数据源关系图显示了产品、日期和雇员维度的数据源表,如下所示,
产品维度是一个雪花性维度:DimProduct表和DimProductSubcategory表有外键关系,同时DimProductSubcategory表于DimProductCategory表存在外键关系。
DimDate是一个标准的维度表,但由于创建几个计算成员,当数据加载到分析服务时将被转换。
DimEmployee表中ParentEmployeeKey列和EmplyeeKey列有外键关系。这种自引用的关系说明了Employee是一个父子维度。
3、直接在相应的表中,选择右击、“浏览数据”,我们可以看到ProductSubcategoryKey列作为空的许多行,如下面:
这些数据的缺失就意味着许多产品的子类时未知的,在创建图表时您就会发现,这是一个很严重的问题。我们来详细查看一下有多少产品是没有子类的。
4、在“图表”选项卡,在列列表中,选中ProductSubcategoryKey复选框并清除所有的其他复选框,如下图所示
在图表中显示了表中,有200多行数据缺少ProductSubcategoryKey项的值,如下图所示,在后文中“使用维度向导创建产品维度”中,我们将在产品维度中创建子类属性。在浏览子类属性的时候,就可以看到一个未知成员。因为您已经比较熟悉了DimRroduct表中的数据,因此,当您看到子类属性中的未知成员是,就能知道这些代表了DimProduct表中ProductSubcategoryKey为空置的行。并且可以以此作为检验数据视图中数据是否正确的标准,并能适时地修改系统,确保后面内容是正确的。
查看DimDate表的方法和查看DImProduct方法一样...这里就不做介绍。