5.2 定义事实关系
用户有时需要按事实数据表中的数据项定义度量值的维度,或者查询事实数据表中其他特定的相关信息,例如与特定销售情况有关的发票号或采购订单号。当根据此类事实数据表项定义维度时,则将该维度称为“事实维度”。事实维度也称为退化维度。若要将相关的事实数据表行(例如所有与特定发票号有关的行)组合在一起,事实维度将非常有用。尽管可以将此信息置于关系数据库中一个单独的维度表内,但为此信息创建单独的维度表没有任何益处,因为维度表与事实数据表按照同一速度增长,只会创建重复的数据并增加不必要的复杂性。
在 Microsoft SQL Server 2005 Analysis Services (SSAS) 内,您可以确定是否在 MOLAP 维度结构中复制事实维度数据以提高查询性能,或者是否将事实维度定义为 ROLAP 维度,以在牺牲查询性能的前提下节省存储空间。以 MOLAP 存储模式存储维度时,除了在度量值组的分区中存储维度成员外,所有维度成员还都存储在高度压缩的 MOLAP 结构的 Analysis Services 实例内。以 ROLAP 存储模式存储维度时,只有维度定义存储在 MOLAP 结构中,而维度成员本身则在查询时从基础关系事实数据表中查询。可以根据事实维度的查询频率、典型查询返回的行数、查询的性能以及处理成本来确定适当的存储模式。将维度定义为 ROLAP 时,并不要求使用该维度的所有多维数据集也以 ROLAP 存储模式进行存储。这一点与 SQL Server 2000 Analysis Services 不同。
定义事实维度时,可以将事实维度和度量值组之间的关系定义为事实关系。以下约束适用于事实关系:
- 粒度属性必须是维度的键列,该键列将在维度和事实数据表中的事实之间创建一对一关系。
- 一个维度只能与一个单一的度量值组具有一种事实关系。
在每次对事实关系所引用的度量值组进行更新后,事实维度必须进行增量更新。
|
有关详细信息,请参阅
在本主题的各任务中,您将根据 CustomerPONumber 列在 FactInternetSales 事实数据表中添加新的多维数据集维度。然后将此新增多维数据集维度和“Internet 销售”度量值组之间的关系定义为事实关系。
定义“Internet 销售订单”事实维度
定义“Internet 销售订单”事实维度
在 Analysis Services Tutorial 多维数据集的多维数据集设计器中,单击“多维数据集结构”选项卡。
右键单击“维度”窗格中的任意位置,然后单击“添加多维数据集维度”。
在“添加多维数据集维度”对话框中,单击“新建维度”。
此时将打开维度向导。
在“欢迎使用维度向导”页上,单击“下一步”。
在“选择数据源视图”页上,单击“下一步”从 Adventure Works DW 数据源视图中为该维度选择数据。
在“选择维度类型”页上,单击“下一步”指定该维度将是标准维度。
在“选择主维度表”页上,选择“主表”列表中的 dbo.FactInternetSales。
注意,已根据 SalesOrderNumber 和 SalesOrderLineNumber 列将一个组合键定义为键列,并且为成员名称属性定义了 SalesOrderLineNumber 列。另注意,您无法从 FactInternetSales 表以外的任何表中为成员名称属性定义列。
单击“下一步”。
在“选择相关表”页上,确保未选中任何表,然后单击“下一步”。
在“选择维度属性”页上,清除所有选定的维度属性,然后选中“客户 PO 号”维度属性的复选框。
注意,不能选择维度向导中的任何组合键作为属性。这是因为已将这些组合键定义为列键。若要将这些组合键凭其自身的条件添加为属性,则必须在定义维度之后将它们定义为属性。
单击“完成”,将维度名称更改为“Internet 销售订单详细信息”,单击“完成”,然后单击“确定”,将新创建的数据库维度作为多维数据集维度添加到 Analysis Services Tutorial 多维数据集。
打开“Internet 销售订单详细信息”维度的维度设计器。
在“特性”窗格中,选择“Internet 销售”,然后在“属性”窗口中将 Name 属性更改为“项说明”。
在 NameColumn 属性单元内,选择“(新建)”,将 Product 选为源表,在“对象绑定”对话框中将 EnglishProductName 选为源列,然后单击“确定”。
将“数据源视图”窗格中 InternetSales 表内的 SalesOrderNumber 列拖到“特性”窗格,以将“销售订单号”属性添加到维度中。
将新建的“销售订单号”特性的 Name 属性更改为“订单号”,将 OrderBy 属性更改为 Key。
在“层次结构和级别”窗格中,创建“Internet 销售订单”用户层次结构,该层次结构在订单中包含“订单号”和“项说明”级别。
在“特性”窗格中,选择“Internet 销售订单详细信息”,然后查看“属性”窗口中 StorageMode 属性的值。
注意,该维度默认存储为 MOLAP 维度。尽管将存储模式更改为 ROLAP 可以节省处理时间和存储空间,但这样做将降低查询性能。为了实现本教程教学目的,您将使用 MOLAP 作为存储模式。
定义事实维度的事实关系
定义事实维度的事实关系
切换到 Analysis Services Tutorial 多维数据集的多维数据集设计器,再单击“维度用法”选项卡。
注意,“Internet 销售订单详细信息”多维数据集维度自动配置为具有事实关系,如唯一图标所示。
下图显示了具有事实关系的“Internet 销售订单详细信息”多维数据集维度。
在“Internet 销售”度量值组和“Internet 销售订单详细信息”维度相交处,单击“项说明”单元内的省略号按钮 (…),以查看事实关系属性。
将打开“定义关系”对话框。注意,您无法配置任何一种属性。
下图显示了“定义关系”对话框中的事实关系属性。
单击“取消”。
使用事实维度浏览多维数据集
使用事实维度浏览多维数据集
在“生成”菜单中,单击“部署 Analysis Services 教程”,以将更改部署到 Analysis Services 的实例中,并处理数据库。
在部署成功完成后,单击 Analysis Services Tutorial 多维数据集的多维数据集设计器中的“浏览器”选项卡,然后单击“重新连接”。
清除“数据”窗格中的所有度量值和层次结构,然后将“Internet 销售-销售额”度量值添加到“数据”窗格的数据区域。
在“元数据”窗格中,依次展开“客户”、“位置”、“客户所在地域”、“成员”、“所有客户”、Australia、Queensland、Brisbane、4000,右键单击 Adam Powell,然后单击“添加到子多维数据集区域”。
通过筛选将销售订单限制为返回给单个客户的销售订单,可使用户深入了解大型事实数据表中的基础细节,而不会显著降低查询性能。
将“Internet 销售订单详细信息”维度的“Internet 销售订单”用户定义层次结构添加到“数据”窗格的行区域。
注意,Adam Powell 的销售订单号和对应的 Internet 销售量将出现在“数据”窗格中。
展开行区域中的每个销售订单号,以查看这些订单中每个行项的详细信息。
下图显示了前面步骤中的确定维度的过程。