数据模型中表之间的关系
使用 Power Pivot 加载项导入数据的一个优点是 Power Pivot 有时可在其在 Excel 中创建的数据模型中检测关系和创建新关系。
当您导入多个表时,Power Pivot 将自动检测表之间的所有现有关系。 此外,创建数据透视表时,Power Pivot 将分析表中的数据。 它检测尚未定义的可能关系并建议这些关系中应包含的相应列。
检测算法使用有关列的值和元数据的统计数据,对关系的概率进行推断。
所有相关列中的数据类型都应兼容。 对于自动检测,只支持整数类型和文本数据类型。 有关数据类型的详细信息,请参阅数据模型中支持的数据类型。
为了成功检测到关系,查找列中唯一键的数目必须大于关系中多方的表中的值数。 换言之,关系中多方的键列不得包含查找表的键列中没有的任何值。 例如,假设您的一个表中列出了产品及其 ID(查找表),而销售表中列出了每个产品的销售额(关系中的多方)。 如果您的销售记录包含的一个产品的 ID 在产品表中没有对应的 ID,则不能自动创建关系,但您也许可以手动创建关系。 要让 Excel 检测到此关系,您首先需要更新产品查找表以及缺失产品的 ID。
请确保关系中多方的键列的名称类似于查找表中键列的名称。 名称不必完全相同。 例如,在业务设置中,实质上包含相同数据的列的名称经常会有多个变体:Emp ID、EmployeeID、Employee ID、EMP_ID 等等。 此算法可检测相似的名称,并向具有相似名称或完全匹配名称的列分配较高的概率。 因此,为了提高创建关系的概率,您可以尝试重命名导入的数据中的列,使其名称与现有表中的列相似。 如果 Excel 找到多个可能的关系,则不创建关系。
此信息可以帮助您了解为何并非所有关系都能检测到,或更改元数据(如字段名称和数据类型)可以怎样改善自动关系检测的结果。 有关详细信息,请参阅与关系相关的问题的故障排除。
自动检测命名集
系统不会自动检测数据透视表中命名集和相关字段之间的关系。 您可以手动创建这些关系。 如果要使用自动关系检测功能,请删除每个命名集并将命名集中的各个字段直接添加到数据透视表中。
关系的推理
在某些情况下,表之间的关系会自动链接。 例如,如果在下面的前两组表之间创建关系,则会推断出其他两个表之间存在关系,进而自动建立一个关系。
Products 和 Category -- 手动创建
Category 和 SubCategory -- 手动创建
Products 和 SubCategory -- 推断出关系
为了使关系自动链接,关系的方向必须相同,如上所示。 例如,如果初始关系是在 Sales 和 Products 以及 Sales 和 客户 之间建立的,则不会推断出关系。 这是因为 Products 和 客户 之间的关系是多对多关系。