定义引用关系
在本教程中到目前为止,您所定义的每个多维数据集维度都基于一个按主键到外键的关系直接链接到度量值组事实数据表的表。在本主题的各任务中,您会将**“地域”维度通过一个称为“引用维度”的“分销商”**维度链接到分销商销售额的事实数据表。这允许用户按地域定义经销商销售额的维度。有关详细信息,请参阅定义被引用关系和被引用关系属性。
按地域定义分销商销售维度
按地域定义分销商销售维度
在解决方案资源管理器中,右键单击**“多维数据集”文件夹中的 Analysis Services Tutorial,然后单击“浏览”**。
删除“数据”窗格中的所有层次结构,然后确保**“分销商销售-销售额”**度量值出现在“数据”窗格的数据区域中。如果未出现该度量值,则请将其添加到“数据”窗格中。
将**“地域”用户定义层次结构从“元数据”窗格中的“地域”维度拖到“数据”窗格的“将行字段拖至此处”**区域。
注意,**“分销商销售-销售额”度量值并未按照“区域”层次结构中的“国家/地区-区域”**属性成员正确确定维度,如下图所示。
打开 Adventure Works DW 数据源视图的数据源视图设计器。
在**“关系图组织程序”**窗格中,查看 Geography 表和 ResellerSales 表之间的关系。
注意,这些表之间没有直接链接。但是,它们之前存在通过 Reseller 表和 SalesTerritory 表进行的间接链接。
双击表示 Geography 表和 Reseller 表之间的外键-主键关系的箭头。
在**“编辑关系”**对话框中,注意 GeographyKey 列既是 Geography 表中的主键,又是 Reseller 表中的外键。
单击**“取消”,切换到 Analysis Services Tutorial 多维数据集的多维数据集设计器,然后单击“维度用法”**选项卡。
注意,**“地域”多维数据集维度当前与“Internet 销售”度量值组或“分销商销售”**度量值组都没有关系。
单击**“客户”维度和“Internet 销售”度量值组相交处的“全名”单元中的省略号按钮 (…**)。
在**“定义关系”对话框中,注意,在 DimCustomer 维度表和 FactInternetSales 度量值组表之间,根据每个表中的 CustomerKey 列定义了“常规”**关系。到目前为止,您在本教程中定义的所有关系都是常规关系。
下图显示了**“定义关系”**对话框,其中常规关系是 DimCustomer 维度表和 FactInternetSales 度量值组表之间的关系。
单击**“取消”**。
单击**“地域”维度和“分销商销售”度量值组相交处的未命名单元中的省略号按钮 (…**)。
在**“定义关系”**对话框中,可查看当前未定义“地域”多维数据集维度和“分销商销售”度量值组之间的关系。无法定义常规关系,因为“地域”维度的维度表和“分销商销售”度量值组的事实数据表之间没有直接关系。
在**“选择关系类型”列表中,选择“被引用的”**。
您可以通过指定直接连接到度量值组表的维度来定义引用关系,该维度称为“中间维度”,Analysis Services 可以使用该维度将引用维度链接到事实数据表。然后指定将引用维度链接到中间维度的属性。
在**“中间维度”列表中,选择“分销商”**。
“地域”维度的基础表通过“分销商”维度的基础表链接到事实数据表。
在**“引用维度属性”列表中,选择“地域关键字”,然后尝试在“中间维度属性”列表中选择“地域关键字”**。
注意,**“地域关键字”并未出现在“中间维度属性”列表中。这是因为 GeographyKey 列尚未定义为“分销商”**维度中的属性。
下图显示,在**“定义关系”对话框中,“地域关键字”不可用于“分销商”**中间维度的中间维度属性。
单击**“取消”**。
在下一个任务中,您将通过定义基于“分销商”维度中 GeographyKey 列的属性来解决此问题。
定义中间维度属性和引用维度关系
定义中间维度属性和引用维度关系
打开**“分销商”维度的维度设计器,然后查看“数据源视图”窗格中 Reseller 表内的列,再查看“特性”窗格中“分销商”**维度内已定义的属性。
注意,尽管已将 GeographyKey 定义为 Reseller 表中的一列,但在“分销商”维度中并未基于此列定义任何维度属性。Geography 被定义为“地域”维度中的维度属性,原因在于它是将该维度的基础表链接到事实数据表的键列。
若要将**“地域关键字”属性添加到“分销商”维度中,右键单击“数据源视图”中的 GeographyKey,然后单击“从列新建属性”**。
在**“属性”窗格中,选择“地域关键字”**,然后在“属性”窗口中,将 AttributeHierarchyOptimizedState 属性设置为 NotOptimized,将 AttributeHierarchyOrdered 属性设置为 False,并将 AttributeHierarchyVisible 属性设置为 False。
“分销商”维度中的“地域关键字”属性只能用于将“地域”维度链接到 Reseller Sales 事实数据表。因为它不能用于浏览,所以不存在将该属性层次结构定义为可见的值。而且,对该属性层次结构进行排序和优化只能为处理性能带来负面影响。但是,必须启用该属性,使其作为两个维度之间的链接。
切换到 Analysis Services Tutorial 多维数据集的多维数据集设计器,单击**“维度用法”选项卡,然后单击“分销商销售”度量值组和“地域”多维数据集维度相交处的省略号按钮 (…**)。
在**“选择关系类型”列表中,选择“被引用的”**。
在**“中间维度”列表中,选择“分销商”**。
在**“引用维度属性”列表中,选择“地域关键字”,然后在“中间维度属性”列表中选择“地域关键字”**。
注意,已选中**“具体化”**复选框。这是 MOLAP 维度的默认设置。在处理过程中,具体化维度属性链接可在维度的 MOLAP 结构中具体化或存储事实数据表和每行的引用维度之间的链接值。这样做对处理性能和存储要求的影响不大,但会增强查询性能(有时会很显著)。
单击**“确定”**。
注意,**“地域”多维数据集维度现在已链接到“分销商销售”**度量值组。该图标指示此关系是引用维度关系。
在**“维度用法”选项卡上的“维度”列表中,右键单击“地域”,然后单击“重命名”**。
将该多维数据集维度的名称更改为 Reseller Geography。
由于该多维数据集维度现在已链接到**“分销商销售”**度量值组,所以用户可以从显式定义它在多维数据集中的用法中受益,避免可能造成的用户混淆。
按地域成功定义分销商销售维度
按地域定义分销商销售维度
在**“生成”菜单上,单击“部署 Analysis Services 教程”**。
在部署成功完成后,在 Analysis Services Tutorial 多维数据集的多维数据集设计器中单击**“浏览器”选项卡,再单击“重新连接”**按钮。
在“元数据”窗格中,展开**“分销商所在地域”,右键单击“地域”,然后单击“添加到行区域”**。
请注意,**“分销商销售-销售额”度量值现在已按照“区域”用户定义层次结构中的“国家/地区-区域”**属性正确确定了维度,如下图所示。