第 5-2 课 - 定义事实关系

适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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

在SQL Server Analysis Services中,可以确定是复制 MOLAP 维度结构中的事实维度数据以提高查询性能,还是将事实维度定义为 ROLAP 维度,以节省存储空间,同时牺牲查询性能。 使用 MOLAP 存储模式存储维度时,除存储在度量值组的分区中外,所有维度成员都存储在高度压缩的 MOLAP 结构的 SQL Server Analysis Services 实例中。 使用 ROLAP 存储模式存储维度时,只有维度定义存储在 MOLAP 结构中-在查询时从基础关系事实数据表查询维度成员本身。 可以根据事实维度的查询频率、典型查询返回的行数、查询的性能以及处理成本来确定适当的存储模式。 将维度定义为 ROLAP 时,并不要求使用该维度的所有多维数据集也以 ROLAP 存储模式进行存储。 可以对每个维度的存储模式单独进行配置。

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

  • 粒度属性必须是维度的键列,该键列将在维度和事实数据表中的事实之间创建一对一关系。

  • 一个维度只能与一个单一的度量值组具有一种事实关系。

注意

在每次对事实关系所引用的度量值组进行更新后,事实维度必须进行增量更新。

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

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

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

  1. 在“解决方案资源管理器”中,右键单击“维度”,然后单击“新建维度”

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

  3. 在“选择创建方法”页上,确保选中“使用现有表”选项,然后单击“下一步”

  4. “指定源信息 ”页上,验证是否已选择 Adventure Works DW 2019 数据源视图。

  5. 在“主表”列表中,选择“InternetSales”

  6. 在“键列”列表中,确保列出了“SalesOrderNumber”和“SalesOrderLineNumber”

  7. 在“名称列”列表中,选择“SalesOrderLineNumber”

  8. 单击“下一步”。

  9. 在“选择相关表”页面上,清除所有表旁边的复选框,然后单击“下一步”

  10. 在“选择维度属性”页面上,请单击页眉内的复选框两次,以清除所有复选框。 “销售订单号”属性将保持选中状态,因为它是键属性。

  11. 选择“客户 PO 编号”属性,然后单击“下一步”

  12. 在“完成向导”页上,将名称更改为“Internet 销售订单详细信息”,然后单击“完成”来完成向导。

  13. 在“文件”菜单上,单击“全部保存” 。

  14. 在“Internet 销售订单详细信息”维度的维度设计器的“属性”窗格中,选择“销售订单编号”,然后将“属性”窗口中的“名称”属性更改为“产品说明”

  15. NameColumn 属性单元格中,单击浏览按钮 (...) 。在“名称列”对话框中,从“源表”列表中选择“Product”,为“源”列选择“EnglishProductName”,然后单击“确定”。

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

  17. 将新建的“销售订单编号”特性的“名称”属性更改为“订单编号”,将“OrderBy”属性更改为“Key”

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

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

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

  20. 若要将新创建的维度作为多维数据集维度添加到SQL Server Analysis Services教程多维数据集中,请切换到多维数据集Designer。 在“多维数据集结构”选项卡上,右键单击“维度”窗格,并选择“添加多维数据集维度”

  21. 在“添加多维数据集维度”对话框中,选择“Internet 销售订单详细信息”,然后单击“确定”

定义事实维度的事实关系

  1. 在SQL Server Analysis Services教程多维数据集的多维数据集Designer中,单击“维度使用情况”选项卡。

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

  2. 单击“项说明”单元格中“Internet 销售”度量值组和“Internet 销售订单详细信息”维度交集处 (...) 浏览按钮,查看事实关系属性。

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

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

    “定义关系”对话框

  3. 单击“取消” 。

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

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

  2. 部署成功完成后,单击“多维数据集Designer”SQL Server Analysis Services教程多维数据集的“浏览器”选项卡,然后单击“重新连接”按钮。

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

  4. 在“元数据”窗格中,依次展开“客户”、“位置”、“客户所在地域”、“成员”、“所有客户”、“Australia”、“Queensland”、“Brisbane”、“4000”,右键单击“Adam Powell”,然后单击“添加到筛选器”

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

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

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

    下图显示了上述步骤的结果。

    Internet 的维度 Sales-Sales

课程中的下一个任务

定义多对多关系

另请参阅

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