定义事实关系

用户有时需要按事实数据表中的数据项定义度量值的维度,或者查询事实数据表中其他特定的相关信息,例如与特定销售情况有关的发票号或采购订单号。当根据此类事实数据表项定义维度时,则将该维度称为“事实维度**”。事实维度也称为退化维度。若要将相关的事实数据表行(例如所有与特定发票号有关的行)组合在一起,事实维度将非常有用。尽管可以将此信息置于关系数据库中一个单独的维度表内,但为此信息创建单独的维度表没有任何益处,因为维度表与事实数据表按照同一速度增长,只会创建重复的数据并增加不必要的复杂性。

在 Microsoft SQL Server 2005 Analysis Services (SSAS) 内,您可以确定是否在 MOLAP 维度结构中复制事实维度数据以提高查询性能,或者是否将事实维度定义为 ROLAP 维度,以在牺牲查询性能的前提下节省存储空间。以 MOLAP 存储模式存储维度时,除了在度量值组的分区中存储维度成员外,所有维度成员还都存储在高度压缩的 MOLAP 结构的 Analysis Services 实例内。以 ROLAP 存储模式存储维度时,只有维度定义存储在 MOLAP 结构中,而维度成员本身则在查询时从基础关系事实数据表中查询。可以根据事实维度的查询频率、典型查询返回的行数、查询的性能以及处理成本来确定适当的存储模式。将维度定义为 ROLAP 时,并不要求使用该维度的所有多维数据集也以 ROLAP 存储模式进行存储。这一点与 SQL Server 2000 Analysis Services 不同。

定义事实维度时,可以将事实维度和度量值组之间的关系定义为事实关系。以下约束适用于事实关系:

  • 粒度属性必须是维度的键列,该键列将在维度和事实数据表中的事实之间创建一对一关系。
  • 一个维度只能与一个单一的度量值组具有一种事实关系。
ms167409.note(zh-cn,SQL.90).gif注意:
在每次对事实关系所引用的度量值组进行更新后,事实维度必须进行增量更新。

有关详细信息,请参阅维度关系定义事实关系和事实关系属性

在本主题的各任务中,您将根据 CustomerPONumber 列在 FactInternetSales 事实数据表中添加新的多维数据集维度。然后将此新增多维数据集维度和**“Internet 销售”**度量值组之间的关系定义为事实关系。

定义“Internet 销售订单”事实维度

定义“Internet 销售订单”事实维度

  1. 在 Analysis Services Tutorial 多维数据集的多维数据集设计器中,单击**“多维数据集结构”**选项卡。

  2. 右键单击**“维度”窗格中的任意位置,然后单击“添加多维数据集维度”**。

  3. 在**“添加多维数据集维度”对话框中,单击“新建维度”**。

    此时将打开维度向导。

  4. 在**“欢迎使用维度向导”页上,单击“下一步”**。

  5. 在**“选择数据源视图”页上,单击“下一步”**从 Adventure Works DW 数据源视图中为该维度选择数据。

  6. 在**“选择维度类型”页上,单击“下一步”**指定该维度将是标准维度。

  7. 在**“选择主维度表”页上,选择“主表”**列表中的 dbo.FactInternetSales

    注意,已根据 SalesOrderNumber 和 SalesOrderLineNumber 列将一个组合键定义为键列,并且为成员名称属性定义了 SalesOrderLineNumber 列。另注意,您无法从 FactInternetSales 表以外的任何表中为成员名称属性定义列。

  8. 单击**“下一步”**。

  9. 在**“选择相关表”页上,确保未选中任何表,然后单击“下一步”**。

  10. 在**“选择维度属性”页上,清除所有选定的维度属性,然后选中“客户 PO 号”**维度属性的复选框。

    注意,不能选择维度向导中的任何组合键作为属性。这是因为已将这些组合键定义为列键。若要将这些组合键凭其自身的条件添加为属性,则必须在定义维度之后将它们定义为属性。

  11. 单击**“完成”,将维度名称更改为“Internet 销售订单详细信息”,单击“完成”,然后单击“确定”**,将新创建的数据库维度作为多维数据集维度添加到 Analysis Services Tutorial 多维数据集。

  12. 打开**“Internet 销售订单详细信息”**维度的维度设计器。

  13. 在**“特性”窗格中,选择“Internet 销售”,然后在“属性”窗口中将 Name 属性更改为“项说明”**。

  14. NameColumn 属性单元内,选择**“(新建)”,将 Product 选为源表,在“对象绑定”对话框中将 EnglishProductName 选为源列,然后单击“确定”**。

  15. 将**“数据源视图”窗格中 InternetSales 表内的 SalesOrderNumber 列拖到“特性”窗格,以将“销售订单号”**属性添加到维度中。

  16. 将新建的**“销售订单号”特性的 Name 属性更改为“订单号”**,将 OrderBy 属性更改为 Key

  17. 在**“层次结构和级别”窗格中,创建“Internet 销售订单”用户层次结构,该层次结构在订单中包含“订单号”“项说明”**级别。

  18. 在**“特性”窗格中,选择“Internet 销售订单详细信息”**,然后查看“属性”窗口中 StorageMode 属性的值。

    注意,该维度默认存储为 MOLAP 维度。尽管将存储模式更改为 ROLAP 可以节省处理时间和存储空间,但这样做将降低查询性能。为了实现本教程教学目的,您将使用 MOLAP 作为存储模式。

定义事实维度的事实关系

定义事实维度的事实关系

  1. 切换到 Analysis Services Tutorial 多维数据集的多维数据集设计器,再单击**“维度用法”**选项卡。

    注意,**“Internet 销售订单详细信息”**多维数据集维度自动配置为具有事实关系,如唯一图标所示。

    下图显示了具有事实关系的**“Internet 销售订单详细信息”**多维数据集维度。

    “Internet 销售订单详细信息”多维数据集维度

  2. 在**“Internet 销售”度量值组和“Internet 销售订单详细信息”维度相交处,单击“项说明”单元内的省略号按钮 (…**),以查看事实关系属性。

    将打开**“定义关系”**对话框。注意,您无法配置任何一种属性。

    下图显示了**“定义关系”**对话框中的事实关系属性。

    “定义关系”对话框

  3. 单击**“取消”**。

使用事实维度浏览多维数据集

使用事实维度浏览多维数据集

  1. 在**“生成”菜单中,单击“部署 Analysis Services 教程”**,以将更改部署到 Analysis Services 的实例中,并处理数据库。

  2. 在部署成功完成后,单击 Analysis Services Tutorial 多维数据集的多维数据集设计器中的**“浏览器”选项卡,然后单击“重新连接”**。

  3. 清除**“数据”窗格中的所有度量值和层次结构,然后将“Internet 销售-销售额”度量值添加到“数据”**窗格的数据区域。

  4. 在**“元数据”窗格中,依次展开“客户”“位置”“客户所在地域”“成员”“所有客户”AustraliaQueenslandBrisbane4000,右键单击 Adam Powell,然后单击“添加到子多维数据集区域”**。

    通过筛选将销售订单限制为返回给单个客户的销售订单,可使用户深入了解大型事实数据表中的基础细节,而不会显著降低查询性能。

  5. 将**“Internet 销售订单详细信息”维度的“Internet 销售订单”用户定义层次结构添加到“数据”**窗格的行区域。

    注意,Adam Powell 的销售订单号和对应的 Internet 销售量将出现在**“数据”**窗格中。

  6. 展开行区域中的每个销售订单号,以查看这些订单中每个行项的详细信息。

    下图显示了前面步骤中的确定维度的过程。

    “Internet 销售-销售额”的维度划分

课程中的下一个任务

定义多对多关系

请参阅

其他资源

维度关系
定义事实关系和事实关系属性

帮助和信息

获取 SQL Server 2005 帮助