数据库表中的每一行都必须可唯一标识,才能用于 Insights。 可以使用以下逻辑来确定用于识别唯一性的列:
- 搜索主键。 如果存在,可以使用定义主键的列。
- 搜索标记为唯一的索引。 如果存在,可以使用定义索引的列。
提示:
如果使用唯一索引,并且所选列中包含空值,则可能会出现意外结果。 最佳做法是为所有表定义一个主键。 如果无法定义主键,则参与唯一索引的列应在数据库中标记为 not null。
如果未满足上述条件,则在选择要添加到工作簿的表时,将显示一个警告图标,并且必须应用唯一标识符。 唯一标识符是可唯一标识数据中每一行的一个字段或字段的组合。 如果使用单个字段,则该字段必须仅包含唯一值,并且不能包含空值。 如果使用多个字段,则无需各字段仅包含唯一值,但行的组合必须始终唯一。
可以使用字符串或整型列来创建唯一标识符。 日期、浮点型、双精度型列不能作为唯一标识符。
示例
下表包含连锁零售店的销售数据。 表中包含商店编号、商店所在的州以及总销售额。 Store number 和 Total sales 两个字段包含所有唯一值和非空值。 另一个字段 State 不包含唯一值。 在本例中,应将 Store number 字段用作唯一标识符,因为每个商店将仅列出一次,并且对于每个商店,已知商店编号始终唯一。
Store number | State | Total sales |
---|---|---|
1001 | Colorado | 1,583,296.29 |
1002 | Colorado | 1,938,495.84 |
1003 | Wyoming | 1,439,752.57 |
1004 | Montana | 2,583,485.83 |
1005 | Montana | 928,573.67 |
如果单个字段不符合唯一标识符的要求,或者您不确定该字段中的值将始终保持唯一,则可以组合多个字段来创建唯一条目。 下表包含每个商店库存项目的数量。 与之前的示例不同,Store number 字段不唯一,因为每个商店中存在多个库存项目。 Item ID 字段也不唯一。 Quantity 字段当前唯一,但是商店中库存项目的数量可能会发生变化,并且并非始终唯一,因此该字段不能用作标识符。 Store number 和 Item ID 字段的组合将是更好的标识符,因为每个商店的每个项目将仅列出一次。
Store number | Item ID | Quantity |
---|---|---|
1001 | 123456 | 20 |
1001 | 234567 | 5 |
1001 | 345678 | 16 |
1002 | 123456 | 11 |
1002 | 234567 | 0 |
1002 | 345678 | 21 |
选择唯一标识符
要从数据库表中应用唯一标识符,请完成以下步骤:
- 单击警告图标 。
选择唯一标识符窗口随即显示。 该窗口将显示数据库表中不包含空值的非空间字段以及字段类型。
- 执行以下操作之一:
- 如果您知道哪个列或列的组合最适合创建唯一标识符,请选择字段。
- 如果您不知道哪个列或列的组合最适合创建唯一标识符,请单击分析按钮以扫描表来查找包含所有唯一值的列。 包含唯一值的列使用以下图标进行指示:
- 如果表中没有可用作唯一标识符的列,或者您不想根据现有字段创建唯一标识符,则可以选择复制数据库表并创建主键。
- 单击应用。
创建主键
某些数据库表不包含可用作唯一标识符的列。 因此,必须先创建主键,然后才能在 Insights 中使用表。 对于这些表,您必须选择复制数据库表并创建主键。
Insights 不会对数据库表中的数据进行编辑,其中包括添加主键列。 在应用主键之前,需要创建数据库表的副本。 数据库表的副本位置取决于数据库连接的权限。 对于读写连接,表的副本将存储在数据库中。 对于只读连接,表的副本将存储在 Insights 工作簿中。 复制到工作簿的数据集将具有与托管要素图层或上传文件相同的功能。