定义事实关系
用户有时需要按事实数据表中的数据项定义度量值的维度,或者查询事实数据表中其他特定的相关信息,例如与特定销售情况有关的发票号或采购订单号。当根据此类事实数据表项定义维度时,则将该维度称为“事实维度**”。事实维度也称为退化维度。若要将相关的事实数据表行(例如所有与特定发票号有关的行)组合在一起,事实维度将非常有用。尽管可以将此信息置于关系数据库中一个单独的维度表内,但为此信息创建单独的维度表没有任何益处,因为维度表与事实数据表按照同一速度增长,只会创建重复的数据并增加不必要的复杂性。
在 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 销售量将出现在**“数据”**窗格中。
展开行区域中的每个销售订单号,以查看这些订单中每个行项的详细信息。
下图显示了前面步骤中的确定维度的过程。