创建关系

适用于: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 个表。 一般情况下,从关系源导入数据时,现有关系会连同数据一起自动导入。 若要通过“获取数据”自动在数据模型中创建关系,必须在数据源的表之间存在关系。

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

查看现有关系

  1. 单击“ 模型 ”菜单“ >模型视图>”“关系图视图”。

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

    Model.bim 文件的关系图视图的屏幕截图。

    注意

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

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

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

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

    提示

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

  3. 验证从 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。 如果单独导入来自同一数据源连接的表,则不会创建这些表之间的任何关系,并且必须手动创建。 如果没有关系出现,这意味着在数据源中没有任何关系。 可以在数据模型中手动创建它们。

详细查看

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

关系图视图的屏幕截图,其中突出显示了箭头、星号和数字。

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

“编辑关系”对话框的屏幕截图,其中突出显示了表 1 和表 2 的 DimCustomer 和 GeographyKey 选项。

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

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

在表之间添加新关系

  1. 在模型设计器的 FactInternetSales 表中,单击并按住 OrderDate 列,然后将光标拖动到 DimDate 表中的 Date 列,然后松开。

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

    模型设计器的屏幕截图,其中调出了 OrderDate 和 Date,其中显示了表之间的实线。

    注意

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

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

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

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

    模型设计器的屏幕截图,其中调出了 ShipDate 和 Date。

后续步骤

第 5 课:创建计算列