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