返回列表 发帖

创建关系

适用于:SQL Server 2019 及更高版本 Analysis Services  Azure Analysis Services  Power BI Premium

本课程介绍如何验证导入数据时自动创建的关系,以及在不同的表之间添加新关系。 关系是在两个表之间建立的连接,用于确立这些表中的数据应该如何相关。 例如,DimProduct 表和 DimProductSubcategory 表基于 DimProduct 表中每个产品属于 DimProductSubcategory 表中的子类别这一事实的关系。 若要了解详细信息,请参阅关系。

重要

目前,随 Azure Synapse Analytics (SQL Data Warehouse) 一起安装的 AdventureWorksDW 示例默认数据库在本教程中所述的表之间没有关系。 必须手动创建所有关系。 本课稍后将介绍手动创建关系。

本课预计完成时间:10 分钟

先决条件
本文是表格建模教程的一部分,应当按顺序完成。 在执行本课程中的任务之前,应已完成上一课:第 3 课:标记为日期表。

查看现有关系并添加新关系
使用 Get Data 导入数据时,从 AdventureWorksDW 数据库中获取了七个表。 一般情况下,从关系源导入数据时,现有关系会连同数据一起自动导入。 若要通过“获取数据”自动在数据模型中创建关系,必须在数据源的表之间存在关系。

在继续创作模型之前,应验证是否已正确创建表之间的这些关系。 在本教程中,还需添加三个新关系。

查看现有关系
单击“模型”菜单“>模型视图”视图>。

现在,模型设计器将以关系图视图出现,这是一种图形格式,显示已导入的所有表,且这些表之间以线条连接。 表之间的线条指示当您导入数据时自动创建的关系。

Screenshot of the diagram view of the Model.bim file.

备注

如果看不到表之间存在任何关系,则可能意味着数据源的这些表之间没有关系。

使用模型设计器右下角的迷你图控件,尽可能包含最多的表。 还可以单击表并将其拖放到不同的位置,使表更加相互靠近,或者按特定的顺序排列它们。 移动表不会影响表之间的关系。 若要查看特定表中的所有列,请单击并拖动表的边缘,扩大或缩小该表。

单击 DimCustomer 表与 DimGeography 表之间的实线。 这两个表之间的实线表明这种关系处于活动状态,也就是说,在计算 DAX 公式时会默认使用此关系。

请注意,DimCustomer 表中的 GeographyKey 列和 DimGeography 表中的 GeographyKey 列现在各显示在一个框中。 关系中需使用这些列。 关系的属性现在也显示在 “属性” 窗口中。

提示

还可以使用“管理关系”对话框显示表格格式的所有表之间的关系。 在表格模型资源管理器中,右键单击“关系>”管理关系。

验证从 AdventureWorksDW 数据库导入每个表时,创建了以下关系:

活动        表        相关查找表
是        DimCustomer [GeographyKey]        DimGeography [GeographyKey]
是        DimProduct [ProductSubcategoryKey]        DimProductSubcategory [ProductSubcategoryKey]
是        DimProductSubcategory [ProductCategoryKey]        DimProductCategory [ProductCategoryKey]
是        FactInternetSales [CustomerKey]        DimCustomer [CustomerKey]
是        FactInternetSales [ProductKey]        DimProduct [ProductKey]
如果缺少任意关系,请验证模型是否包含以下表:DimCustomer、DimDate、DimGeography、DimProduct、DimProductCategory、DimProductSubcategory 和 FactInternetSales。 如果同一数据源连接中的表是单独导入的,则不会创建这些表之间的任何关系,并且必须手动创建。 如果没有关系出现,这意味着在数据源中没有任何关系。 可以在数据模型中手动创建它们。

详细查看
在图示视图中,可看到一个箭头、一个星号,以及显示表之间关系的线条上的数字。

Screenshot of the diagram view with the arrows, asterisks, and numbers highlighted.

箭头显示筛选器方向。 星号显示此表是关系基数中的 多 方,另一个表显示此表是关系的 一 侧。 如果需要编辑某个关系(例如,更改关系的筛选方向或基数),请双击关系线条打开“编辑关系”对话框。

Screenshot of the Edit Relationship dialog box with DimCustomer and GeographyKey options highlighted for both Table 1 and Table 2.

这些功能用于高级数据建模,不在本教程的范畴内。 若要了解详细信息,请参阅 Analysis Services 中表格模型的双向交叉筛选器。

在某些情况下,可能需要在模型中的表之间创建更多关系,以支持特定的业务逻辑。 对于本教程,需要在 FactInternetSales 表与 DimDate 表之间创建 3 个额外的关系。

在表之间添加新关系
在模型设计器中,在 FactInternetSales 表中,单击并按住 OrderDate 列,然后将光标拖动到 DimDate 表中的 Date 列,然后释放。

此时会显示一条实线,显示已在 Internet Sales 表中的 OrderDate 列和 Date 表中的 Date 列之间创建了活动关系。

Screenshot of the model designer with OrderDate and Date called out showing the solid line between the tables.

备注

创建关系时,会自动选择主表与相关查找表之间的基数和筛选方向。

在 FactInternetSales 表中,单击并按住 DueDate 列,将光标拖到 DimDate 表中的 Date 列,然后松开鼠标。

此时会显示一条虚线,显示已在 FactInternetSales 表中的 DueDate 列和 DimDate 表中的 Date 列之间创建了非活动关系。 可以在表之间创建多个关系,但每次只能有一个关系处于活动状态。 可将非活动关系设为活动状态,以便在自定义 DAX 表达式中执行特殊聚合。

最后,再创建一个关系。 在“FactInternetSales”表中,单击并按住“ShipDate”列,将光标拖到“DimDate”表中的“Date”列,然后松开鼠标。

Screenshot of the model designer with ShipDate and Date called out.

后续步骤
第 5 课:创建计算列

建议的内容
Analysis Services 教程第 8 课:创建透视
了解如何为 Analysis Services 表格模型项目创建透视。
Analysis Services 教程第 3 课:标记为日期表
了解如何将表标记为 Analysis Services 表格模型项目的日期表。
Analysis Services 教程第 5 课:创建计算列
了解如何为 Analysis Services 表格模型项目创建计算列。
Analysis Services 教程第 9 课:创建层次结构
了解如何为 Analysis Services 表格模型项目创建层次结构。
本文内容

先决条件
查看现有关系并添加新关系

返回列表