维度用法定义多维数据集维度与多维数据集中的度量值组之间的关系。 多维数据集维度是特定多维数据集中使用的数据库维度的实例。 多维数据集通常可以具有与度量值组不直接相关的多维数据集维度,但可能通过另一个维度或度量值组间接与度量值组相关。 向多维数据集添加数据库维度或度量值组时,Microsoft SQL Server Analysis Services 会尝试通过检查多维数据集数据源视图中维度表与事实数据表之间的关系以及检查维度中属性之间的关系来确定维度使用情况。 Analysis Services 会自动设置其可检测的关系的维度使用情况设置。
维度和度量值组之间的关系包括参与关系的维度和事实数据表,以及指定特定度量值组中维度粒度的粒度属性。
常规维度关系
当维度的键列直接联接到事实数据表时,多维数据集维度与度量值组之间存在常规维度关系。 此直接关系基于基础关系数据库中的主键外键关系,但也可能基于数据源视图中定义的逻辑关系。 常规维度关系表示维度表与传统星型架构设计中事实数据表之间的关系。 有关正则关系的详细信息,请参阅 “定义正则关系”和“正则关系属性”。
引用维度关系
当维度的键列通过另一个维度表中的键将间接联接到事实数据表时,多维数据集维度与度量值组之间的引用维度关系存在,如下图所示。
引用维度关系表示维度表与雪花架构设计中事实数据表之间的关系。 当维度表在雪花架构中连接时,可以使用来自多个表的列定义单个维度,也可以基于单独的维度表定义单独的维度,然后使用引用维度关系设置定义它们之间的链接。 下图显示了一个名为 InternetSales 的事实数据表,以及一个雪花架构中名为 Customer 和 Geography 的两个维度表。
可以使用 Customer 表作为维度主表和作为相关表包含的 Geography 表创建维度。 然后,在维度和 InternetSales 度量值组之间定义常规关系。
或者,可以创建与 InternetSales 度量值组相关的两个维度:基于 Customer 表的维度,以及基于 Geography 表的维度。 然后,可以使用“客户”维度的引用维度关系将 Geography 维度与 InternetSales 度量值组关联。 在这种情况下,当 InternetSales 度量值组中的事实按 Geography 维度进行维度时,事实按客户和地理位置进行维度。 如果多维数据集包含名为 Reseller Sales 的第二个度量值组,则无法按 Geography 对 Reseller Sales 度量值组中的事实进行维度,因为经销商销售与 Geography 之间不存在任何关系。
可以链接在一起的引用维度数没有限制,如下图所示。
有关引用关系的详细信息,请参阅 “定义引用的关系”和“引用的关系属性”。
事实维度关系
事实维度(通常称为退化维度)是从事实数据表中的属性列而不是维度表中的属性列构造的标准维度。 有用的维度数据有时存储在事实数据表中以减少重复。 例如,下图显示 Adventure Works DW 多维 2012 示例数据库中 的 FactResellerSales 事实数据表。
该表不仅包含经销商颁发的订单的每一行的属性信息,还包含有关订单本身的属性信息。 上图中圆圈的属性标识 FactResellerSales 表中可用作维度中的属性的信息。 在这种情况下,另外两条信息(运营商跟踪号和经销商颁发的采购订单号)由 CarrierTrackingNumber 和 CustomerPONumber 属性列表示。 此信息很有趣,例如,对于在单个跟踪号下发货的所有订单,用户肯定会对查看聚合信息(如总产品成本)感兴趣。 但是,如果没有这两个属性的维度数据,则无法组织或聚合。
从理论上讲,可以创建一个维度表,该表使用与 FactResellerSales 表相同的关键信息,并将其他两个属性列 CarrierTrackingNumber 和 CustomerPONumber 移到该维度表。 但是,需要复制大量数据,并将不必要的复杂性添加到数据仓库,以仅将两个属性表示为单独的维度。
注释
事实维度通常用于支持钻取作。 有关操作的详细信息,请参阅操作(Analysis Services - 多维数据)。
注释
在对事实关系引用的度量值组的每个更新后,必须以增量方式更新事实维度。 如果事实维度是 ROLAP 维度,Analysis Services 处理引擎会删除任何缓存并增量处理度量值组。
有关事实关系的详细信息,请参阅 “定义事实关系”和“事实关系属性”。
许多维度关系
在大多数维度中,每个事实都联接到一个维度成员,一个维度成员可以与多个事实相关联。 在关系数据库术语中,这称为一对多关系。 但是,将单个事实加入多个维度成员通常很有用。 例如,银行客户可能有多个帐户(支票、保存、信用卡和投资帐户),帐户也可以具有联合或多个所有者。 然后,从此类关系构造的 Customer 维度将具有多个与单个帐户事务相关的成员。
SQL Server Analysis Services 允许在维度和事实数据表之间定义多对多关系。
注释
若要支持多对多维度关系,数据源视图必须在涉及的所有表之间建立外键关系,如上图所示。 否则,在维度设计器的 “维度使用情况 ”选项卡中建立关系时,将无法选择正确的中间度量值组。
有关多对多关系的详细信息,请参阅 定义多对多关系和多对多关系属性。