关系用于根据公共字段或位置连接两个或更多数据集的属性。 公共字段用于识别各数据集中彼此连接的行,而关系类型则用于确定在已连接数据集中将保留哪些行。
关系可用于将查找表中的属性添加到其他数据集、合并来自两个数据集的属性以启用不同的分析类型,以及启用非空间表中的位置。 已连接数据集在数据窗格中显示为结果数据集 ,并可用于扩展您的分析,方法是将所有已连接数据集中的数据用作单个图层。
示例
某公共卫生办公室的接触追踪员正在调查某传染病的爆发情况。 该接触追踪员可以访问包含病例数据(包括测试结果)的查找表以及包含在测试之前产生接触的相关活动和位置的数据集。 目前已将这两个数据集连接起来,以便将病例数据添加到位置数据中。 接触追踪员可以使用已连接数据集来创建一个可显示病例、活动、活动日期和测试结果的引用表,以及一个可显示每个病例的测试结果和活动数量的树状图。
有关完整的工作流,请参阅使用 ArcGIS Insights 追踪病毒传播课程。
在分析工作流中创建关系
在分析工作流中创建的关系仅存在于创建连接的工作簿中。 如果您希望结果数据集存在于工作簿之外,则您可以通过共享数据集或使用数据工程来创建新要素图层。
完成以下步骤以在分析工作流中创建关系:
- 如有必要,可打开工作簿并添加两个或更多数据集。
- 单击数据窗格上方的创建关系按钮 。
随即显示创建关系窗口并显示当前页面的数据集列表。
- 选择您要连接的第一个数据集。
选择第一个数据集后,视图将进行更新,仅显示适用于关系的数据集。
- 选择您要连接的第二个数据集。
Insights 将对已添加的数据集进行分析,并建议要用于连接的字段(如果可能)。 建议的字段将基于字段包含的数据类型和字段名称。
- 单击编辑关系按钮 以更改以下关系属性:
注:
如果未选择建议的字段,则对话框会自动打开。
- 要更改连接中的字段,请单击选择字段参数中的框所对应的箭头,然后选择一个新字段。
- 要添加字段(例如当数据集使用组合键时),请单击添加字段按钮并从菜单中选择新字段。
- 要更改连接类型,请从选择关系类型参数中选择内部(默认)、全部、左或右。
- 关闭编辑关系窗口。
- 如有必要,可重复步骤 4 到 6 以添加其他数据集。
- 单击完成以创建关系。
系统随即将新的已连接数据集添加到数据窗格。
创建与数据工程的关系
注:
Insights desktop 中提供了数据工程。 所有 Insights in ArcGIS Online 和 Insights in ArcGIS Enterprise 用户都可以访问 Insights desktop。 有关详细信息,请参阅 ArcGIS Insights 概述。
数据工程现在可以预览。
可将创建关系工具添加到数据模型中,并将其用于连接两个或多个数据集以创建单个输出数据集。
完成以下步骤以在数据工程工作流中创建关系:
- 如有必要,可在 Insights desktop 中打开数据工作簿并添加数据。
- 在数据工作簿工具栏上,单击创建关系按钮 。
随即显示创建关系窗口。
- 如有必要,单击侧面工具栏上的数据窗格按钮 以打开数据窗格。
- 在数据窗格中,选择您要连接的第一个数据集。
- 选择您要连接的第二个数据集。
Insights 将对已添加的数据集进行分析,并建议要用于连接的列(如果可能)。 建议的列基于该列所包含的数据类型和列名称。
- 单击编辑关系按钮 以更改以下关系属性:
注:
如果未选择建议的列,则对话框会自动打开。
- 要更改连接中的列,请单击选择列参数中的框所对应的箭头,然后选择一个新列。
- 要添加列(例如当数据集使用组合键时),请单击添加列按钮并从菜单中选择新列。
- 要更改连接类型,请从选择关系类型参数中选择内部(默认)、全部、左或右。
- 关闭编辑关系窗口。
- 如有必要,可重复步骤 5 到 7 以添加其他数据集。
- 可选:单击预览以基于当前连接参数来创建结果数据集的视图。
- 单击完成以创建关系。
系统随即将新的已连接数据集添加到数据窗格并显示该表。 该工具将添加到数据模型中。
支持的数据
以下数据类型可用于创建关系:
- 要素图层
- 添加到工作簿的文件
- 来自数据库连接的数据集(可用于 Insights in ArcGIS Enterprise 和 Insights desktop)
- 来自时空分析的结果数据集,其中包含来自不受支持数据类型的结果
创建关系不支持要素服务中的定义查询。 将在创建关系窗口中禁用工作簿中不支持关系的数据。
注:
以下数据源的分析工作流不支持关系:
- 远程要素图层,例如 ArcGIS Living Atlas 图层。
- 来自不同数据库和实例的数据库表。
- 来自不同数据存储的数据集。
如果您的数据集与分析工作流中的连接不兼容,则可以将数据集复制到工作簿,然后使用复制的数据集来创建关系。 或者,您可以使用数据工程来连接来自不同数据库或数据存储的数据集。
关系类型
所使用的关系类型以及所选择的公共字段决定了在已连接数据集中保留的记录。 Insights 中支持的关系类型有内部、全部、左和右。
注:
通过将相交作为空间关系来创建空间连接(使用位置字段建立的连接)。 但是,您仍然可以选择“内部”、“全部”、“左”或“右”作为关系类型。
以下几个小节提供了使用每种关系类型的公共字段连接两个表的结果。
第一个表(订单)将追踪来自不同分支机构的交易。 该表中将包含每笔交易的唯一 ID、发生交易的分支机构 ID、交易成本(以美元计)以及付款方式。
订单
订单 ID | 分支机构 ID | 总金额(美元) | 支付方式 |
---|---|---|---|
1204 | 1 | 91.48 | Credit |
1295 | 1 | 103.86 | Credit |
1316 | 3 | 97.81 | Debit |
1406 | 2 | 103.24 | Credit |
1421 | 2 | 44.95 | Cash |
1426 | 2 | 153.71 | Debit |
1454 | 3 | 168.95 | Credit |
1533 | 7 | 32.99 | Cash |
第二个表(分支机构)是一个查找表,其中包含分支机构 ID 号和分支机构位置。
分支机构
分支机构 ID | 分支机构位置 |
---|---|
1 | Redlands |
2 | 波特兰 |
3 | 华盛顿特区 |
4 | 阿灵顿 |
5 | 夏洛特 |
6 | 丹佛 |
分支机构 ID 字段将在两个表之间进行共享,并用于创建连接。 在每个示例中,“订单”表都位于连接的左侧。
内部
内部仅保留匹配两个数据集的记录。 不会添加空记录。
内部是默认的关系类型。
下表显示了具有“订单”和“分支机构”表之间的内部关系类型的连接的结果:
订单 ID | 分支机构 ID | 总金额(美元) | 支付方式 | 分支机构位置 |
---|---|---|---|---|
1204 | 1 | 91.48 | Credit | Redlands |
1295 | 1 | 103.86 | Credit | Redlands |
1316 | 3 | 97.81 | Debit | 华盛顿特区 |
1406 | 2 | 103.24 | Credit | 波特兰 |
1421 | 2 | 44.95 | Cash | 波特兰 |
1426 | 2 | 153.71 | Debit | 波特兰 |
1454 | 3 | 168.95 | Credit | 华盛顿特区 |
已排除的记录是“订单”表中的分支机构 ID 7 和“分支机构”表中的分支机构 ID 4、5 和 6 的记录,原因是这些记录在两个表中都不存在。
全部
全部关系类型(全外连接)将保留两个数据集中的所有记录,并在不存在匹配项的位置添加空值。
下表显示了具有“订单”和“分支机构”表之间的全部关系类型的连接的结果:
订单 ID | 分支机构 ID | 总金额(美元) | 支付方式 | 分支机构位置 |
---|---|---|---|---|
1204 | 1 | 91.48 | Credit | Redlands |
1295 | 1 | 103.86 | Credit | Redlands |
1316 | 3 | 97.81 | Debit | 华盛顿特区 |
1406 | 2 | 103.24 | Credit | 波特兰 |
1421 | 2 | 44.95 | Cash | 波特兰 |
1426 | 2 | 153.71 | Debit | 波特兰 |
1454 | 3 | 168.95 | Credit | 华盛顿特区 |
1533 | 7 | 32.99 | Cash | <无数据> |
<无数据> | 4 | <无数据> | 阿灵顿 | |
<无数据> | 5 | <无数据> | 夏洛特 | |
<无数据> | 6 | <无数据> | 丹佛 |
生成的数据集中包含分支机构 ID 4、5、6 和 7 的空值,原因是两个数据集中都不存在这些分支机构 ID。
左侧
左关系类型(左外连接)将保留左表中的所有记录以及右表中的匹配记录。 当右表中不存在匹配值时,系统将使用空值。
使用左关系类型时,必须首先选择该表,以确保要保留其所有记录的表位于连接的左侧。
下表显示了具有“订单”和“分支机构”表之间的左关系类型的连接的结果:
订单 ID | 分支机构 ID | 总金额(美元) | 支付方式 | 分支机构位置 |
---|---|---|---|---|
1204 | 1 | 91.48 | Credit | Redlands |
1295 | 1 | 103.86 | Credit | Redlands |
1316 | 3 | 97.81 | Debit | 华盛顿特区 |
1406 | 2 | 103.24 | Credit | 波特兰 |
1421 | 2 | 44.95 | Cash | 波特兰 |
1426 | 2 | 153.71 | Debit | 波特兰 |
1454 | 3 | 168.95 | Credit | 华盛顿特区 |
1533 | 7 | 32.99 | Cash | <无数据> |
生成的数据集中包含分支机构 ID 7 的空值,原因是“分支机构”数据集中不存在该分支机构 ID。
右侧
右关系类型(右外连接)将保留右表中的所有记录以及左表中的匹配记录。 当左表中不存在匹配值时,系统将使用空值。
使用右关系类型时,必须第二选择该表,以确保要保留其所有记录的表位于连接的右侧。
下表显示了具有“订单”和“分支机构”表之间的右关系类型的连接的结果:
订单 ID | 总金额(美元) | 支付方式 | 分支机构 ID | 分支机构位置 |
---|---|---|---|---|
1204 | 91.48 | Credit | 1 | Redlands |
1295 | 103.86 | Credit | 1 | Redlands |
1316 | 97.81 | Debit | 3 | 华盛顿特区 |
1406 | 103.24 | Credit | 2 | 波特兰 |
1421 | 44.95 | Cash | 2 | 波特兰 |
1426 | 153.71 | Debit | 2 | 波特兰 |
1454 | 168.95 | Credit | 3 | 华盛顿特区 |
<无数据> | <无数据> | 4 | 阿灵顿 | |
<无数据> | <无数据> | 5 | 夏洛特 | |
<无数据> | <无数据> | 6 | 丹佛 |
生成的数据集中包含分支机构 ID 4、5 和 6 的空值,原因是“订单”数据集中不存在这些分支机构 ID。
最佳做法
最佳做法是将最详细的数据集放置在连接的左侧。 在关系类型示例中,“订单”表位于左侧。
当单个字段不唯一时,请使用多个字段创建连接。 例如,如果要将 CityName 连接到 CityName,由于 CityName 中的值在数据集中重复,因此可能还需要指定县、州和国家/地区。
在决定使用已连接数据集来创建哪些可视化时,请考虑连接的基数(一对一、一对多或多对多)。 基数不会影响关系类型(内部、全部、左或右),但是会对聚合已连接数据集中的字段或在地图上显示字段产生影响。 例如,如果已连接数据集具有一对多或多对多关系,则用于聚合数据的可视化(如条形图)可能会人为地显示高统计数据。