维度简介
所有 Microsoft SQL Server 2005 Analysis Services 维度都是基于数据源视图中的表列或视图列的属性组。独立于多维数据集存在的维度既可以在多个多维数据集中使用,也可以在一个多维数据集中多次使用,还可以在 Analysis Services 实例之间链接。独立于多维数据集存在的维度称为数据库维度,多维数据集中的数据库维度实例称为多维数据集维度。
基于星型架构设计的维度
维度的结构主要由一个或多个基础维度表的结构决定。最简单的结构称为星型架构,在该架构中,每个维度均基于一个通过主键-外键关系直接链接到事实数据表的维度表。
以下关系图阐释了 AdventureWorksDW 示例数据库的一小部分,其中 FactResellerSales 事实数据表与 DimReseller 和 DimPromotion 这两个维度表相关。FactResellerSales 事实数据表中的 ResellerKey 列定义与 DimReseller 维度表中的 ResellerKey 主键列的外键关系。同样,FactResellerSales 事实数据表中的 PromotionKey 列定义与 DimPromotion 维度表中的 PromotionKey 主键列的外键关系。
基于雪花型架构设计的维度
通常,因为需要使用来自多个表的信息才能定义维度,因此将需要一个更为复杂的结构。在此称为雪花型架构的结构中,每个维度均基于多个通过主键-外键关系相互链接并最终链接到事实数据表的表中的列属性。例如,以下关系图阐释了完整说明 AdventureWorksDW 示例项目中的“产品”维度所需的表:
若要完整说明某一产品,则在“产品”维度中必须包含该产品的类别和子类别。但是,该信息并没有直接位于 DimProduct 维度的主表中。从 DimProduct 到 DimProductSubcategory 的外键关系(进而拥有与 DimProductCategory 表的外键关系)使在“产品”维度中包含产品类别和子类别的信息成为可能。
雪花型架构与引用关系
有时,您可以选择是使用雪花型架构定义来自多个表的维度中的属性,还是先定义两个单独的维度,然后定义这两个表之间的引用维度关系。以下关系图阐释了这种方案。
在上述关系图中,FactResellerSales 事实数据表与 DimGeography 维度表没有外键关系。但是,FactResellerSales 事实数据表却与 DimReseller 维度表具有外键关系,因此该维度表进而与 DimGeography 维度表也具有外键关系。若要定义包含每个零售商地域信息的“零售商”维度,则必须从 DimGeography 和 DimReseller 维度表检索这些属性。但是,在 Analysis Services 中,通过先创建两个单独的维度,然后通过定义这两个维度之间的引用维度关系将其链接到一个度量值组内,也可以完成上述操作。有关引用维度关系的详细信息,请参阅维度关系。
在此方案中使用引用维度关系的一个优点是:可以先创建一个地域维度,然后根据该地域维度创建多个多维数据集维度,而不需要任何额外的存储空间。例如,可以将其中一个地域多维数据集维度链接到分销商维度,将另一个地域多维数据集维度链接到客户维度。相关主题:维度关系、定义被引用关系和被引用关系属性
处理维度
创建维度之后,必须先处理维度,然后才能查看该维度中属性和层次结构的成员。更改了维度的结构,或者更新了该维度基础表中的信息之后,必须再次对维度进行处理,然后才能查看更改。在发生结构更改后对维度进行处理时,还必须处理任何包括该维度的多维数据集,否则无法查看多维数据集。
安全性
维度的所有从属对象(包括层次结构、级别以及成员)都使用 Analysis Services 中的角色进行保护。维度安全性可应用于数据库中使用该维度的所有多维数据集,或者只应用于特定的多维数据集。有关维度安全性的详细信息,请参阅授予维度访问权限。
请参阅
概念
维度存储
维度翻译
启用写操作的维度
使用维度向导定义新的维度
使用多维数据集向导定义多维数据集、维度、层次结构和属性