从新建查询图层对话框创建查询图层以访问云数据仓库中的数据。 为获得最佳性能,请在与数据仓库相同的云环境和区域中安装用于查询数据仓库的 ArcGIS AllSource 客户端。
提示:
本页面介绍了如何为云数据仓库中的表创建查询图层。 要访问数据库中的数据,请参阅为数据库中的数据创建查询图层。
先决条件和工作流
创建查询图层之前,请参阅查询图层的数据库和客户端配置。
接下来,阅读以下小节以了解使用新建查询图层对话框为云数据仓库创建查询图层时要遵循的工作流。
连接到数据仓库
在定义查询图层之前,您必须连接到数据仓库。
您可以在目录窗格中创建连接(如在 ArcGIS AllSource 中连接到云数据仓库所述),将其添加到工程,然后从新建查询图层对话框中浏览到此连接,也可以从新建查询图层对话框创建连接。
定义 SQL 查询
在查询文本框中指定结构化查询语言 (SQL) 查询,以从仓库中的数据访问您需要的数据。 当您访问包含大量行的表或视图时,您定义的查询应限制将包含在图层中的行数。 例如,如果要素未聚合到条柱中,则无法真正查看地图上的数百万要素。 对于这些类型的表或视图,使用查询返回数据的子集。
构建查询图层时,使用特定于数据仓库的 SQL 语法。
表中的每一列都具有特定的数据类型。 ArcGIS 可以处理最常用的数据类型。 但不支持某些不常用的数据类型。 如果属性列的类型为未知,这表明 ArcGIS 不支持该数据类型。 指定某个查询时,必须在查询中排除数据类型为“未知”的所有列,或者将这些列的数据类型更改为 ArcGIS 支持的数据类型。
有关详细信息,请参阅 ArcGIS 中支持的云数据仓库数据类型。
提示:
- 要了解如何在 SQL 查询中使用变量,请参阅定义查询图层中的参数。
- 如果没有准备 SQL 查询并且需要查看表列表,请选中表列表框。 您可以双击列表中出现的表和列来构建 SQL 查询。
- 如果您在查询中包含外部表,则绘图和查询性能可能会变慢。
创建物化视图
当您访问数据仓库中包含大量数据的表并定义将查询返回的总要素数限制为合理数量的 SQL 查询时,将该查询作为物化视图存储在数据库中以提高访问数据时的查询性能。
在新建查询图层对话框中创建物化视图时,视图定义是您为查询图层指定的 SQL 查询。 每次使用查询图层时,查询图层都将访问物化视图,而不是执行 SQL 查询。
如果在 Google BigQuery 中创建了物化视图,您可以将物化视图配置为过期。 如果超过几天不需要该视图,请执行此操作以避免对物化视图的存储收取费用。
如果在 SQL 查询中包含变量或为视图定义了 SQL 查询,则无法创建物化视图。 如果在查询中包含外部表,则无法创建物化视图。
提示:
要查看与查询图层关联的物化视图的名称,请打开地图中查询图层的图层属性对话框。 请勿在云数据仓库中删除或更改此视图。
有关特定数据源如何支持物化视图的信息,请参阅云数据仓库供应商提供的文档。
验证 SQL 语句
定义 SQL 查询并创建物化视图后,验证 SQL 语句。 在验证期间,ArcGIS 使用表中返回的第一行属性来确定查询的有效性。
ArcGIS 还使用查询返回的第一行属性来过滤将显示在地图中以满足 ArcGIS 要求的其他行。 例如,ArcGIS 仅支持空间表中的一个空间参考。 默认情况下,如果要素类中的要素使用不同的空间参考 ID (SRID),则查询图层将仅返回与查询返回的第一个要素具有相同 SRID 的行。 同样,ArcGIS 对于每个表仅支持一种几何类型。 默认情况下,只有与查询返回的第一行具有相同几何类型的要素才会显示在地图上。 要使用不同的 SRID 或几何类型,请定义查询图层的空间属性。
指定唯一标识符
唯一标识符是 ArcGIS 用于标识表中各行的一个或多个列。
在验证期间,ArcGIS 将尝试为表标识单个唯一标识符列。 如果 ArcGIS 找到符合条件的列,则可以将其用于查询图层。 如果 ArcGIS 未找到唯一标识符或者需要使用不同的唯一标识符,则可以使用新建查询图层对话框定义一个标识符。
定义空间属性(可选)
对于包含空间列的要素类或视图,可以定义以下内容,或者使用在验证时 ArcGIS 检测到的默认值:
- 几何类型 - 决定图层将存储点、多点、线或面要素。
- 空间参考 - 图层的坐标系和其他相关空间属性。
注:
为查询图层定义空间参考并不会对数据进行重新投影,而只是定义在 ArcGIS 中绘制查询结果地图时应使用的空间参考。
查询 Google BigQuery 时无法定义空间参考。
- SRID - 这是图层的空间参考标识符,用于确保查询仅返回具有相同空间参考标识符的几何。 如果查询图层不包含空间字段,则 SRID 值为空。 如果设定了该值,则结果集中将排除所有不包含指定几何 SRID 值的要素。
创建用于访问云数据仓库中数据的查询图层
完成以下步骤以使用新建查询图层对话框在 ArcGIS AllSource 工程的地图中定义查询图层:
- 在 ArcGIS AllSource,打开要添加查询图层的地图。
- 单击地图功能区上的添加数据按钮 并从下拉列表中选择查询图层按钮 。
将显示新建查询图层对话框。
- 执行以下操作之一来指定连接:
- 如果工程中已存在连接文件 (.sde),请从下拉列表中选择此文件。
- 如果工程中不存在连接,请选择“新建数据库连接”按钮 并创建一个连接。
- 在名称文本框中,为将创建的查询指定一个名称。
这是将显示在地图内容窗格中的名称。
- 在查询文本框中输入或粘贴一个 SQL 查询。
要查看表列表及其列,请选中表列表复选框。 您可以双击表列表节中的表,将表中的所有列添加到查询文本框中并在查询文本框中编辑查询。 例如,您可以从查询中删除不想包含的列,并在查询中添加子句以限制查询图层中包含的数据。
- 选择如何定义图层的空间属性。
- 允许 ArcGIS 发现图层的空间属性 - ArcGIS AllSource 将使用查询返回的第一行的空间属性。 ArcGIS AllSource 在您验证 SQL 语句时确定了这些属性。 这是默认设置。
- 为图层定义空间属性 - 如果选择此选项,则必须指定用于图层的空间属性。
- 选中创建输出查询图层的物化视图复选框,将 SQL 查询作为物化视图存储在云数据仓库中。
- 在 BigQuery 中创建物化视图时,使用向上或向下箭头指定您希望物化视图在数据仓库中保留的天数。
超过指定的天数之后,物化视图将被删除。 如果在此有效期之后打开包含查询图层的地图,ArcGIS 将使用与之前相同的查询定义和有效期重新创建物化视图。
- 单击验证以确认查询语法是否正确以及 ArcGIS 是否可以使用该查询。
此操作将在数据库中执行查询,并检查查询的结果集是否符合 ArcGIS 所实施的数据建模标准。 只有当查询图层有效时,才会将其添加到地图。
以下验证规则适用:
- 结果集最多只能包含一个空间字段。
- 结果集最多只能包含一个空间参考。
- 结果集必须只有一种 shape 类型。
- 结果集不能包含 ArcGIS 不支持的字段类型。
如果由于任何原因而导致验证失败,系统将返回一条错误消息以便您修改查询。
- 验证完成后,单击下一步。
- 为查询图层选择唯一标识符字段。
地图中的所有要素必须具有唯一标识符。 因此,查询图层必须包含一个唯一标识符字段,该字段将包含每个要素的值。 有关为查询图层选择唯一标识符字段的详细信息,请参阅唯一标识符字段。
- 定义查询图层的空间属性。
如果在步骤 6 中选择允许 ArcGIS Pro 发现图层的空间属性,则可能已经设置了这些参数。
- 如果在 Redshift 上定义查询图层,请定义是否包含包含 m 坐标或 z 坐标的要素。
- 从下拉菜单中选择几何类型。
- 单击坐标系 并选择数据使用的空间参考的坐标系,或从现有数据集导入空间参考。
请记住,这不会重新投影数据。
在 BigQuery 或 Snowflake 中的数据上定义查询图层时,无法选择坐标系。
- 如果您在步骤 6 中选择允许 ArcGIS Pro 发现图层的空间属性,请单击完成将查询图层添加到地图中。
- 如果您在步骤 6 中选择定义图层的空间属性,请完成对话框中显示的附加部分。
在此部分(图层范围属性)中,通过选择以下选项之一来指定查询图层的空间范围:
- 输入范围 - 您输入的范围将用于查询图层范围。 单击下一步,然后输入范围。 您输入的范围必须有效,并且包含表中的所有要素。
- 使用地图范围 - 当前地图的范围将用于查询图层范围。 单击下一步查看地图范围值。
- 使用空间参考范围 - 数据的空间参考范围将用于查询图层范围。 对于某些空间参考,这是整个地球。 单击下一步并查看空间参考范围值。
- 完成设置或查看图层范围后,单击完成以将查询图层添加到地图中。
如果您选择创建物化视图,则查询图层是在物化视图而不是源表上定义的。
有关更改查询图层属性的信息,请参阅修改查询图层。