创建关系
适用于:SQL Server 2019 及更高版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium
本课程介绍如何验证导入数据时自动创建的关系,以及在不同的表之间添加新关系。 关系是在两个表之间建立的连接,用于确立这些表中的数据应该如何相关。 例如,DimProduct 表和 DimProductSubcategory 表的关系基于以下事实:DimProduct 表中的每个产品都属于 DimProductSubcategory 表中的子类别。 若要了解详细信息,请参阅关系。
重要
目前,随 Azure Synapse Analytics (SQL Data Warehouse) 一起安装的 AdventureWorksDW 示例默认数据库没有本教程中所述的表之间的关系。 必须手动创建所有关系。 本课稍后将介绍如何手动创建关系。
本课预计完成时间:10 分钟
先决条件
本文是表格建模教程的一部分,应当按顺序完成。 在执行本课程中的任务之前,应已完成上一课:第 3 课:标记为日期表。
查看现有关系并添加新关系
使用“获取数据”导入数据时,从 AdventureWorksDW 数据库中获取了 7 个表。 一般情况下,从关系源导入数据时,现有关系会连同数据一起自动导入。 若要通过“获取数据”自动在数据模型中创建关系,必须在数据源的表之间存在关系。
在继续创作模型之前,应验证是否已正确创建表之间的这些关系。 在本教程中,还需添加三个新关系。
查看现有关系
单击“ 模型 ”菜单“ >模型视图>”“关系图视图”。
现在,模型设计器将以关系图视图出现,这是一种图形格式,显示已导入的所有表,且这些表之间以线条连接。 表之间的线条指示当您导入数据时自动创建的关系。
注意
如果看不到表之间存在任何关系,则可能意味着数据源的这些表之间没有关系。
使用模型设计器右下角的迷你图控件,尽可能包含最多的表。 还可以单击表并将其拖放到不同的位置,使表更加相互靠近,或者按特定的顺序排列它们。 移动表不会影响表之间的关系。 若要查看特定表中的所有列,请单击并拖动表的边缘,扩大或缩小该表。
单击 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。 如果单独导入来自同一数据源连接的表,则不会创建这些表之间的任何关系,并且必须手动创建。 如果没有关系出现,这意味着在数据源中没有任何关系。 可以在数据模型中手动创建它们。
详细查看
在图示视图中,可看到一个箭头、一个星号,以及显示表之间关系的线条上的数字。
箭头显示筛选器方向。 星号显示此表是关系基数中的 多 方,而显示此表的是关系的 一 侧。 如果需要编辑某个关系(例如,更改关系的筛选方向或基数),请双击关系线条打开“编辑关系”对话框。
这些功能用于高级数据建模,不在本教程的范畴内。 若要了解详细信息,请参阅 Analysis Services 中表格模型的双向交叉筛选器。
在某些情况下,可能需要在模型中的表之间创建更多关系,以支持特定的业务逻辑。 对于本教程,需要在 FactInternetSales 表与 DimDate 表之间创建 3 个额外的关系。
在表之间添加新关系
在模型设计器的 FactInternetSales 表中,单击并按住 OrderDate 列,然后将光标拖动到 DimDate 表中的 Date 列,然后松开。
将显示一条实线,显示已在 Internet Sales 表中的 OrderDate 列与 Date 表中的 Date 列之间创建了活动关系。
注意
创建关系时,会自动选择主表与相关查找表之间的基数和筛选方向。
在 FactInternetSales 表中,单击并按住 DueDate 列,将光标拖到 DimDate 表中的 Date 列,然后松开鼠标。
此时会显示一条虚线,显示已在 FactInternetSales 表中的 DueDate 列与 DimDate 表中的 Date 列之间创建了非活动关系。 可以在表之间创建多个关系,但每次只能有一个关系处于活动状态。 可将非活动关系设为活动状态,以便在自定义 DAX 表达式中执行特殊聚合。
最后,再创建一个关系。 在“FactInternetSales”表中,单击并按住“ShipDate”列,将光标拖到“DimDate”表中的“Date”列,然后松开鼠标。