数据管道和 ETL

大多数组织将重要数据存储在多个不同的系统中,而管道和提取、转换和加载 (ETL) 工具等数据加载或集成工具对于在这些不同系统之间移动数据至关重要,因此可以将该数据与其他来源相结合以及依据这些来源分析数据,或将该数据用于使其他相关数据保持最新。

许多不同的技术解决方案可用于移动数据,从按需复制数据的手动解决方案到执行复杂数据转换的自动化系统。

数据管道或 ETL 中“集成”一词的使用很复杂,因为集成通常意味着对数据的更密切或更实时的访问。 如果更改不经常发生,或者对数据的访问不依赖于拥有数据的绝对最新副本(例如,如果夜间同步足以),建议使用 ETL 工具在系统之间移动数据。 在此级别下,它们满足许多集成要求,即使连接本质上是异步的。

ArcGIS Data Pipelines

ArcGIS Data Pipelines 是 ArcGIS Online 的一项功能,用于为将数据与 ArcGIS 连接提供内置集成支持。 使用 Data Pipelines,您可以连接到存储数据的位置并从中读取数据、执行数据准备操作,并将数据写出到 ArcGIS 中的即用型托管要素图层。 您可以使用无代码 Data Pipelines 界面来构建、运行、计划和重现数据准备工作流。

Data Pipelines 适用于矢量数据(例如,点、线和面)和表格数据(例如,以表格形式表示的数据)。 您可以连接到各种数据源,包括 Amazon S3、Google BigQuery、Snowflake、要素图层、上传的本地文件等。 连接后,您可以使用工具来混合、构建和集成数据集,以便在您的工作流程中使用。

Data Pipelines 中的可用工具按工具集分类,包含清理、构建、集成和格式化等功能。 例如,Data Pipelines 工具支持以下工作流:

  • 通过更新或添加字段来操作数据集架构
  • 选择一部分字段以提取目标信息
  • 查找并替换属性值以清理或简化数据
  • 使用连接或合并功能合并数据集
  • 使用 Arcade 函数计算字段
  • 创建用于空间或时间分析的几何或时间字段。
  • 在列中取消嵌套 JSON 对象
  • 在方案之间映射字段

在构建数据管道和配置工具时,您可以将每个处理步骤的结果预览为映射或表格,也可以选择对表格列进行排序以检查行,例如最小值、最大值和 null 值。 数据准备工具的迭代检查和应用有助于提高整个过程中的数据质量和保证。

完成数据管道配置后,您可以运行它来创建或更新将在您的内容中提供的 ArcGIS 要素图层。 您可以为输出要素图层配置几何和时间属性,以便它可以用于其他工作流,例如空间或时态分析、仪表盘或 web 地图。

在以下情况下,建议选择 Data Pipelines:

  • 无代码到低代码解决方案很有吸引力。
  • 您可以在 ArcGIS Online 中创建或维护托管要素图层。
  • 输出服务包含单一要素图层。
  • 输出图层不是关系的起点。
  • 需要一个使用您组织的内容管理的 SaaS 工具。
  • 数据质量可通过预览发现。
  • 数据大小适中(最多数百万,具体取决于行宽)

有关 Data Pipelines 的详细信息,请参阅 Data Pipelines 简介

ArcGIS Data Interoperability

ArcGIS Data Interoperability 扩展模块是适用于 ArcGIS Pro 和 ArcGIS Enterprise 的空间提取、变换和加载 (ETL) 工具集,可通过独立工具运行或在地理处理框架中运行。 Data Interoperability 基于 Safe Software 的 FME 产品构建并与之兼容。

Data Interoperability 为用户提供了使用 Workbench 桌面应用程序的无代码创作体验,并将工作保存到本地工作台文件,或作为空间 ETL 工具保存在工程工具箱中。 工作台可以连接到各种数据源,对传输中的数据执行简单或复杂的操作,然后将数据写入各种目标。 这是一个功能齐全的 ETL 系统,其中工作台可以手动运行以进行检查或测试,也可以定期自动运行,或者作为地理处理服务的一部分进行调用。

Data Interoperability 提供了三个可从 ArcGIS Pro 访问的桌面应用程序(Workbench、Data Inspector 和 Quick Translator)。 ETL 工具结果也可以作为 Web 工具共享到 ArcGIS Server,就像任何其他地理处理结果一样。 这样,您就可以发布可作为 Web 服务访问的 ETL,例如在 Web AppBuilder 地理处理微件中。

在以下情况下,建议选择 Data Interoperability:

  • 需要一个无代码解决方案。
  • 您需要读取或写入在常规条件下不受支持的数据类型。
  • 您需要输出复杂的数据模型
  • 需要地理处理集成。
  • 需要对数据进行深入检查才能发现质量问题。
  • 需要对复杂数据类型(例如 Excel)的深度支持

有关 Data Interoperability 的详细信息,请参阅以下资源:

其他 ETL 选项

构建 ETL 的另一种常见方法是使用 Python,通常与 arcpy 和 ArcGIS Python API 的 arcgis 模块结合使用。 Python 开发人员社区与许多商业提供商一起创建了数百个库,用于协助连接到几乎任何可以想象的数据源,从数据库客户端到存储类型、文件解析器和 Web 客户端库。 这意味着您可以连接到的任何数据源都可以提取到 Python 中,进行变换或修整,然后推送到输出,这在基于 ArcGIS 的系统中通常是可编辑的要素图层、影像文件或 3D 数据集。

一种流行的模式是使用利用行业标准数据访问协议的 Notebook。 例如,在与云仓库集成时,安装仓库符合 PEP 249 标准的数据库访问包,以便 Notebook 可以使用标准 SQL 或基于光标的处理。

一种新兴模式是编写基于 Python 的 ETL,这些 ETL 使用 S3 API 通过 HTTP 进行远程文件访问,这在行业存储提供商中现在很常见。 此模式适用于托管熟知的文件类型(如 Apache Parquet、GeoParquet、JSON 或 CSV)的云对象存储,并且通过扩展 Python 环境来启用。 这种方法允许读取或写入文件,就像它们在 SQL 兼容的数据库中一样,并支持跨任意数量的物理文件对单个逻辑表进行分区,以利用跨文件集的并行处理。 这两种方法相结合,使您能够以强大的性能和完整的功能集对云仓库和云对象存储执行 ETL。

在以下情况下,基于 Python 的 ETL 可能更合适:

  • 您的组织拥有维护代码库所需的 Python 技能和带宽。
  • 您希望尽可能提高并仔细管理 ETL 性能。
  • 您需要具有特殊(在常规条件下不受支持)功能或连接到具有公开可用的 Python 模块的特定数据源或提供商。

许多其他 ETL 产品可从云提供商、独立软件供应商和开源工具获得。 所有这些产品都将支持不同的输入、处理器和输出,因此必须在选择产品之前考虑系统的数据移动要求。 ArcGIS Data Pipelines 和 ArcGIS Data Interoperability 都提供无代码体验,并包含用于将数据写入 ArcGIS 的预构建连接,这在创建实施无代码模式的系统时可以有效地提高效率。

ETL 和数据迁移策略

本节提供了通过几种不同的技术处理数据迁移工作流的几个示例策略,并在每个策略中提供有用的提示和指南。 这些示例应用于构建您的组织数据迁移工作流程,而不是按原样使用或未经审查使用。

熟知的本地文件

此模式仅依赖于 ArcGIS Pro。

最常见的共享文件格式之一是 CSV – 逗号分隔值,也称为 ASCII 或文本文件,紧接着是 Microsoft Excel 工作簿。 CSV 和 Excel 文件因其易于在许多应用程序中共享、读取(包括由员工读取)和写入而广受欢迎。 带有坐标列的 CSV 和 Excel 文件可以直接在 Pro 中使用,可能在进行坐标记法转换地理编码之后使用。 上面链接的帮助主题提供了有关标准文件使用的正确指导。 但是,在 ETL 上下文中(您希望访问然后准备数据以供使用),还需要克服其他常见问题:

  • 文件可以存储在 Web 上,也可以从 API 请求 URL 生成
    • 在此类情况下,文件路径可能无法在 ArcGIS Pro 中验证,文件需要下载才能使用
  • 文件的方案(列名和类型)是从数据推断的
    • 您可能希望使用特定的字段数据类型定义覆盖默认方案
  • 坐标列最初可能以不受支持的记法存储
  • 数据值可以进行编码,例如将 null 值存储为零

此示例演示如何使用核心工具在尽可能减少工作量的情况下处理这些问题。

云原生或云托管的熟知文件

此模式依赖于 ArcGIS Pro 以及扩展的 Python Notebook 环境。

Amazon S3、Google Cloud Storage、Microsoft Azure Blob Storage、MinIO 等云对象存储提供了一种经济高效且高性能的文件共享机制,并支持安全或公共访问。 将对象存储与云存储中的“远程文件系统”区别对待,后者在 ETL 用途下可被视为本地数据。 目前,Pro 中的云存储连接仅支持栅格数据,因此 ArcGIS Pro 中的目录体验(包括文件夹连接)不会显示云托管的矢量数据,例如 Apache Parquet 或 GeoParquet、JSON、GeoJSON、CSV 或 Excel,这些都是常见的 ETL 源格式。 可以通过扩展 Pro Python 环境来克服此限制,以为云存储提供虚拟文件系统支持,并将远程文件视为关系数据库对象,即 DuckDB。 数据发布者可以在任何规模下工作,您也可以这样做,因此云托管的熟知文件 ETL 需要支持:

  • 导入单个文件
  • 同时导入任意数量的文件
  • 导入包含任意数量的文件的空间视图或逻辑视图

此示例显示了如何使用相同的灵活工具处理这些要求。

使用 ArcGIS Data Pipelines 维护要素图层

此模式使用 Data Pipelines 来维护通过其他方式创建的现有要素图层。

ArcGIS Data Pipelines 可以作为 ETL 解决方案独立存在,但在两种情况下,它可以被视为通过其他方式创建的托管要素图层的维护工具:

  • 原有托管要素图层已投入生产
  • 存在多层服务或关系类等复杂性
    • Data Pipelines 无法创建具有这些属性的服务

现有工作流可能足以创建您的图层(甚至可能是必需的),但不提供 Data Pipelines 的易用性、组织共享模型、SaaS 托管和计划功能等优势。 在这种情况下,您可以将 Data Pipelines 视为维护工具。

此示例显示了托管图层维护的一个简单示例。

ArcGIS Online Notebooks 和云原生 GeoParquet

此模式使用 ArcGIS Online 中的托管 Python Notebook,并扩展了 Python 运行时环境以访问包含 GeoParquet 格式数据的云对象存储。

扩展 ArcGIS ProArcGIS Enterprise Notebook Server 的运行时环境是常见模式,但不太熟知的模式可以在 ArcGIS Online 托管笔记本中实现相同的结果。 标准 Python 运行时中的可用 Python 库包括 condapip 包管理器,pip 通常是更简单的选项。 如果您发现自己需要连接到提供 Python 接口的外部系统,则该系统很可能可用并且只需从 PyPi 安装即可。

此示例使用 pip 扩展本地笔记本运行时,并使用 DuckDB 访问 Overture Maps Foundation 的地点主题中的数据(通过 hive 分区查询访问 Amazon S3 对象存储的示例),这意味着在这种情况下,通过通配符查询可以访问任意数量的 GeoParquet 文件。 访问和查询后,数据将用于刷新英格兰伦敦感兴趣地点的托管要素图层(并且可以支持全球任何其他位置)。

ArcGIS Online Notebooks 和云数据仓库

此模式使用运行时环境扩展为支持 Snowflake 读取或写入的 Online Notebook。 任何云仓库都可以类似的方式访问

此模式类似于 ArcGIS Online Notebooks 和云原生 GeoParquet,因为它使用扩展的运行时容器,但它增加了云仓库的处理能力。 ArcGIS Pro 和 Enterprise 支持连接到 Snowflake 和其他云数据仓库以创建查询图层,这些查询图层可用作地理处理工具的输入或在 ArcGIS Pro 地图或 Web 地图中可视化,但使用此模式可将 SQL 的强大功能引入您的 Online Notebook 处理。 云仓库除了是一个数据库之外,它还是一个数据共享生态系统,其他组织可以将任何规模的数据共享到仓库中,并组合这些数据以生成见解和新结果。

此示例维护了加利福尼亚州旧金山(或您定义的全球任何其他地点)的感兴趣地点的托管要素图层。 数据来源于 Esri 业务合作伙伴 SafeGraph 的地点数据集

元数据自动化

此模式使用 ArcGIS Pro 和 ArcGIS Data Interoperability 扩展模块在 ETL 处理期间自动创建或导入元数据。

在 ArcGIS 中记录项目的内容和处理步骤是可用性和信任的关键,但这是一项容易被忽视的活动,使得自动执行生成式步骤非常有价值。 在 ETL 中,您经常使用外部数据,这是与 ArcGIS 元数据流断开连接的另一个常见情况。

此示例显示了如何将元数据创建或采集构建到 ETL 工作流中,这些工作流用于维护托管要素服务,但与地理数据库等其他输出同样有效。

OLE DB 和 ODBC 连接

此模式使用 ArcGIS Pro 和 OLE DB 连接连接到与 ODBC 兼容的外部数据源。

虽然 ArcGIS 支持许多常用的数据库平台,但在 ArcGIS Pro 中,可以使用行业标准 OLE DB 数据源与本地或远程关系数据建立更多连接。 这些连接扩展了 ArcGIS Pro 中的数据库连接选项,使制图、数据工程和分析工作流(包括 ETL)可以访问其他数据源。 连接可以在整个网络中共享。 如果需要处理外部数据库中的数据,OLE DB 连接是一个简单且通用的选项。 除了 ArcGIS 中的任何内置支持之外,一些云数据湖和仓库还提供 ODBC 驱动程序以简化连接。

此示例显示了 ArcGIS 工具如何使用 OLE DB 连接来丰富不支持的表格数据、应用所需的方案以及将结果保留为地理数据库要素类发送。

访问远程 API

此模式使用 ArcGIS Pro 和 ArcGIS Data Interoperability 扩展模块与 API 进行交互,该 API 通过分页返回大型响应 - 以 JSON 块的形式返回,然后需要进行解析。

基于 HTTP 的 REST API 通常返回 JSON 响应,因其兼具可读性(由员工或计算机读取)和灵活性而广受欢迎,但 JSON 对象类型宽松,通常未结构化且无序。 出于响应性原因,API 可能会返回按顺序生成的分段(“分页”)逻辑数据集,但必须在客户端聚合该数据集。 分页和解析为定义的方案这两个挑战可以通过低代码策略轻松解决。

此示例显示了如何与分页 API 交互,以便每天与 ArcGIS Online 托管要素图层同步数据。

将 ETL 计划为 Web 工具

此模式使用 ArcGIS Pro、ArcGIS Enterprise Web 工具以及可选的 ArcGIS Data Interoperability。

也许对于任何工作,无论是否计算机化,最普遍的组织方法是按计划重复。 从 ArcGIS Pro 3.4 和 ArcGIS Enterprise 11.4 开始,在 ArcGIS Pro 中创作的 Web 工具(地理处理服务)也可以在 ArcGIS Pro 中进行计划。 执行 ETL 工作的地理处理工具可以创作为 Python 脚本工具、ModelBuilder 模型或 Data Interoperability 空间 ETL 工具,共享为 Web 工具,然后从 ArcGIS Pro 中工具的运行菜单进行计划。 要使此模式正常工作,关键是确保您的输入和输出数据集参数已注册到 ArcGIS Enterprise 或可供 ArcGIS Enterprise 访问,而不是在发布时作为静态副本上传。

此示例提供了一个空间 ETL Web 工具示例,该工具计划每天运行两次,以将 RSS 源镜像到 ArcGIS Online 托管要素图层。

Top