数据模型关系

已完成

在传统的 Excel 报告中,用户通常使用 VLOOKUP()、HLOOKUP() 或 INDEX/MATCH() 函数将多个表中的不同字段引入到主表中。 此外,他们还使用条件计算(例如 SUMIFS()、AVERAGEIFS() 和 SUBTOTAL() 等)来补充这些查找功能。

数据模型通过实现表之间的关系,减少了多次查找的需要。 借助数据模型关系,新式分析师可对多个表和更多数据快速执行分析。

关系设置

在建立连接或导入数据之前,请确保已验证报表的当前设置。 此验证在设置过程中能够节省时间,或帮助你避免为了删除自动检测到的不准确的关系而做更多工作。

请转到“文件”>“选项和设置”>“选项”>“[Current File] 数据加载”>“关系”。

如果选中了“自动检测新关系”复选框,则在将表从 Power Query 加载到模型中后,Power BI 将尝试标识并创建表之间的关系。 此过程基于表名和列名之间的相似之处,但这是有缺陷的。

关系简介

你可以通过使用一条线连接两个表来表示关系。 将鼠标悬停在这条线上时,将会显示构建关系时所基于的两个对应字段的轮廓。 以下示例显示了报价表中的 CustID 字段与 Customers 表中的 ID 字段相符。

这条线上的指示器能帮助查看者了解“基数”、“交叉筛选器方向”等信息以及关系是处于活动状态(实线)还是非活动状态(虚线)。 稍后将更详细地讨论此概念。

有许多不同的方法可快速简单地创建这些关系,这些方法的详尽程度或难易程度各不相同。

创建关系的最简单方法是转到“数据模型”或“关系图”视图,然后将字段从一个表中拖动到另一个表上的字段中。 数据模型将解释这两个字段之间的关系,如果关系相当明显,会直接显示出来。

另一种更具体的关系创建方法是通过“管理关系”窗口。 可以在 Power BI 中的“主页”选项卡上访问此窗口并在“模型”视图中查看,或在 Excel 中的“数据”选项卡上通过“关系”按钮访问此窗口。

选择其中一个按钮时,初始视图就是数据模型中所有关系的汇总。

注意

Excel 中的“关系”窗口包含相同的信息以及相同的选项(如“自动检测”功能)。

从“管理关系”窗口中,可以选择“编辑”现有关系或“新建”关系。 这两个选项将转到同一关系定义向导。

若要以这种方式定义关系,请从下拉列表中选择两个表,然后突出显示要在关系中链接的相应列/字段。 向导将自动确定关系的基数和交叉筛选器方向。 它还提供激活关系的选项。

注意

通过按住 Ctrl 键并选中字段,可以使用多个列来定义关系。 将在每个图标旁边显示一个数值,以显示它们之间的对齐方式。

基数和交叉筛选器方向是在性能、功能和易用性方面对整个数据模型产生影响的复杂设置。

基数

基数设置反映了数据的方向性以及各个表之间的关联方式。 此关系可以是一对多(1 对 *)、一对一(1 对 1)或多对多(* 对 *)。 这些定义说明了每个表中可能找到的某种类型的值的数目。

一对多

在一对多关系中,一个表中的非重复值将在另一个表中多次找到。 此关系在数据模型中最常用。 例如,一个产品表具有多个属性,这些属性与每个产品有关,每个产品与一个销售表关联,销售表中含有该产品的多个记录。

一对一

在一对一关系中,一个值在两个表中各有一个唯一对应项。 一对一关系并不常见,并且作者通常会将一对一关系合并到一个表中,以便在数据模型中使用。

多对多

在多对多关系中,从匹配列获取的唯一值在两个表中具有多个对应项。 多对多关系需要经过细致考量,还需要高级技术来进行适当管理。 如果一开始使用 Power BI 操作,应避免多对多关系,因为它们有时会产生有关度量值的与预期不符的结果。

交叉筛选器方向

交叉筛选器设置让数据模型知道筛选器在两个表之间的传播方式。 在“模型”视图中,线条中间的箭头表示交叉筛选器方向。

活动状态和非活动状态

你可能想要定期在表之间设置多个关系(例如,销售表中的“订单日期”和“发货日期”字段和日历表中的“日期”字段)。 一次只能在两个表之间设置一个活动关系,但可以设置可在更高级的数据分析表达式 (DAX) 度量值中使用的非活动关系。