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