データ パイプラインと ETL

ほとんどの組織は、重要なデータを複数の異なるシステムに保存しており、パイプラインや、ETL (抽出、変換、ロード) ツールなどのデータの読み込みや統合に使われるツールは、これらの異なるシステム間でデータを移動するために重要で、他のソースと組み合わせて分析に利用したり、他の関連データを最新の状態に保ったりすることができます。

データの移動には、オンデマンドでデータをコピーする手動ソリューションから、複雑なデータ変換を実行する自動システムまで、さまざまな技術ソリューションを使用できます。

「統合」という用語は、データ パイプラインや ETL においてはややこしいものです。というのも統合とは通常、データにより近い、またはよりリアルタイムのアクセスを意味するためです。 ETL は、変更が頻繁に発生しない場合や、アクセスされるデータが完全に最新のコピーでなくても問題ない場合 (夜間の同期で十分な場合など) に、システム間でデータを移動するのに適したツールです。 このレベルでは、接続が本質的に非同期である場合でも、多くの統合要件が満たされます。

ArcGIS Data Pipelines

ArcGIS Data Pipelines は、データを ArcGIS に接続するための統合機能が組み込まれた ArcGIS Online の機能です。 Data Pipelines を使用すると、データの格納場所に接続してデータを読み込み、データの準備操作を実行して、ArcGIS ですぐに使用できるホスト フィーチャ レイヤーにデータを書き出すことができます。 ノーコードの Data Pipelines インターフェイスを使用して、データ準備のワークフローを構築、実行、スケジュール、再現できます。

Data Pipelines は、ベクター データ (ポイント、ライン、ポリゴンなど) およびテーブル データ (テーブルとして表されるデータなど) を扱うことができます。 Amazon S3、Google BigQuery、Snowflake、フィーチャ レイヤー、アップロードされたローカルファイルなど、各種のデータ ソースに接続できます。 接続後は、ツールを使用して、ワークフローで使用するデータセットをブレンド、構築、統合することができます。

Data Pipelines で使用できるツールは、クリーン、構築、統合、フォーマットなどの機能を備えたツール セットに分類されます。 たとえば、次のワークフローが Data Pipelines ツールでサポートされています。

  • フィールドを更新または追加してデータセット スキーマを操作します。
  • フィールドのサブセットを選択して、目的の情報を抽出します。
  • 属性値を検索および置換し、データをクリーニングまたは単純化します。
  • 結合または統合機能を使用してデータセットを結合します。
  • Arcade 関数を使用してフィールドを計算します。
  • 空間解析または時間解析に使用するジオメトリー フィールドまたは時間フィールドを作成します。
  • 列内の JSON オブジェクトのネストを解除します。
  • スキーマ間でフィールドをマップします。

データ パイプラインの構築とツールの構成のとき、各処理ステップで結果をマップまたはテーブルとしてプレビューし、必要に応じてテーブルの列を並べ替えて行 (最小値、最大値、null 値など) を検査できます。 データ準備ツールを繰り返し検査して適用することで、プロセス全体のデータ品質を高め、信頼性を確保できます。

データ パイプラインの構成が完了したら、パイプラインを実行して、コンテンツで使用できる ArcGIS フィーチャ レイヤーを作成または更新できます。 出力フィーチャ レイヤーのジオメトリーと時間のプロパティーを構成しておくと、時空間解析、ダッシュボード、Web マップなど、別のワークフローで使用できるようになります。

データ パイプラインは、次の場合に適しています。

  • ノーコードまたはローコードのソリューションが望まれています。
  • ArcGIS Online でホスト フィーチャ レイヤーを作成または管理します。
  • 出力サービスに、フィーチャ レイヤーが 1 つだけ含まれています。
  • 出力レイヤーがリレーションシップの起点ではありません。
  • 組織のコンテンツで管理可能な SaaS ツールが望まれています。
  • データ品質をプレビューによって確認できます。
  • データサイズが中程度です (行の幅に応じて最大数百万程度)

Data Pipelines の詳細については、Data Pipelines の概要をご参照ください。

ArcGIS Data Interoperability

ArcGIS Data Interoperability エクステンションは、ArcGIS Pro と ArcGIS Enterprise の両方に対応する空間抽出、変換、ロード (ETL) ツール セットで、スタンドアロン ツールまたはジオプロセシング フレームワークで実行されます。 Data Interoperability は、Safe Software の FME 製品を基盤としており、互換性があります。

Data Interoperability では、Workbench デスクトップ アプリを使用して、コード不要のオーサリング エクスペリエンスが得られます。作業内容はローカルの Workbench ファイルに保存されるか、プロジェクト ツールボックスの空間 ETL ツールとして保存されます。 Workbench は、広範なデータ ソースに接続し、転送中のデータに対して単純または複雑な操作を実行してから、広範な宛先にデータを書き込むことができます。 これは完全な機能を持つ ETL システムで、Workbench を手動で実行して検査やテストを行ったり、自動化して定期的に実行したり、ジオプロセシング サービスの一部として呼び出したりできます。

Data Interoperability には 3 つのデスクトップ アプリ (Workbench、Data Inspector、Quick Translator) が用意されており、ArcGIS Pro からアクセスできます。 ETL ツールの結果は、他のジオプロセシング結果と同様に、Web ツールとして ArcGIS Server に共有できます。 これにより、ETL を公開して Web サービスとして利用できるようになり、たとえば Web AppBuilder のジオプロセシング ウィジェットなどからアクセスできます。

次のような場合に、Data Interoperability が適切な選択肢の可能性があります:

  • ノーコードのソリューションが求められる場合
  • 他の方法ではサポートされないデータ タイプの読み取りまたは書き込みが必要な場合
  • 複雑なデータ モデルの出力が必要な場合
  • ジオプロセシングの統合が望まれる場合
  • 品質の問題を明らかにするため、データを詳細に調査する必要がある場合
  • 複雑なデータ タイプ (Excel など) を高度にサポートする必要がある場合

Data Interoperability の詳細については、次のリソースをご参照ください。

その他の ETL オプション

ETL を構築するための他の一般的な方法は、Python を、通常は ArcGIS Python API の arcpy および arcgis モジュールと組み合わせて使用することです。 Python 開発者コミュニティは、多くの商用プロバイダーとともに、データベース クライアントからストレージ タイプ、ファイル パーサー、Web クライアント ライブラリーまで、考えられるほぼすべてのデータ ソースへの接続を支援する何百ものライブラリーを作成しました。 これにより、接続可能な任意のデータ ソースを Python に取り込んだり、変換または再構成したり、出力 (ArcGIS ベースのシステムでは多くの場合は、編集可能なフィーチャ レイヤー、画像ファイル、または 3D データセット) にプッシュしたりできます。

一般的なパターンは、業界標準のデータ アクセス プロトコルを利用するノートブックを使用することです。 たとえば、クラウド ウェアハウスと統合する場合は、ウェアハウスの PEP 249 準拠のデータベース アクセス パッケージをインストールして、ノートブックで標準の SQL またはカーソルベースの処理を使用できるようにします。

新たに出現したパターンは、業界のストレージ プロバイダーの間で現在一般的になっている S3 API を使用して、HTTP 経由のリモート ファイル アクセスを利用する Python ベースの ETL を作成することです。 このパターンは、Apache Parquet、GeoParquet、JSON、CSV などの既知のファイル タイプをホストし、Python 環境を拡張することで有効になるクラウド オブジェクト ストアに適用されます。 この方法では、ファイルを SQL 準拠のデータベースと同様にファイルを読み書きでき、単一の論理テーブルを任意の数の物理ファイルに分割して、ファイルのセット間での並列処理を活用できます。 これら 2 つの方法を組み合わせることで、強力なパフォーマンスと完全な機能セットを備えたクラウド ウェアハウスとクラウド オブジェクト ストアに対して ETL を実行できます。

Python ベースの ETL は、次のような場合に適しています。

  • 組織に、コードベースを保守できるだけの Python のスキルと人的リソースを備えています。
  • ETL のパフォーマンスを最大化し、慎重に管理することを求めています。
  • 公開されている Python モジュールを使用して、特殊な (他の方法ではサポートされない) 機能や特定のデータ ソースまたはプロバイダーへの接続が必要です。

ETL の他の多くのサービスは、クラウド プロバイダー、独立系ソフトウェア ベンダー、およびオープンソース ツールを通じて利用できます。 これらのサービスは、それぞれサポートする入力、プロセッサ、出力が異なるため、サービスを選択する前に、システムのデータ移動要件を考慮することが重要です。 ArcGIS Data Pipelines と ArcGIS Data Interoperability はどちらもノーコード操作を可能にし、ArcGIS にデータを書き込むための事前構築済みの接続が含まれているため、ノーコード パターンを実装するシステムを作成する際に重要な効率向上に役立ちます。

ETL とデータ移行戦略

このセクションでは、データ移行ワークフローを操作するためのいくつかの戦略の例を示します。これらの戦略はそれぞれ、いくつかの異なるテクノロジーを使用します。また、各戦略に役立つヒントとガイドラインも紹介します。 これらのサンプルは、必ずレビューしたうえで組織のワークフローに合わせて調整して使用してください。そのまま使用したり、レビューなしで使用したりしないでください。

ローカルの既知のファイル

このパターンは ArcGIS Pro のみに依存しています。

最も一般的な共有ファイル形式の 1 つは CSV (カンマ区切り値で、ASCII またはテキスト ファイルとも呼ばれる) で、その後にわずかな差でMicrosoft Excel ワークブックが続きます。 CSV ファイルや Excel ファイルは、多くのアプリケーションでの共有、読み取り (人によるものを含む)、書き込みが容易なことで人気があります。 座標列を含む CSV ファイルや Excel ファイルは、ArcGIS Pro で直接使用できます。使用する前に、座標表記の変換ジオコーディングを行うこともできます。 上記のリンク先のヘルプ トピックには、標準的なファイルの使用方法に関する優れた手引きがあります。 しかし、ETL で使用するとき、データにリーチしてから使用のため準備を行うには、他の一般的な問題に対処する必要があります。

  • ファイルは Web に格納することも、API リクエスト URL から生成することもできます。
    • このような場合、ArcGIS Pro ではファイル パスが検証されない場合があり、使用するにはファイルをダウンロードする必要があります。
  • ファイルには、データから推論されたスキーマ (列名とデータ型) があります。
    • デフォルトのスキーマを、特定のフィールド データ タイプの定義でオーバーライドできます。
  • 座標列は、最初はサポートされていない表記で格納されている場合があります。
  • データ値は、たとえば null 値を 0 として格納するなど、エンコードされていることがあります。

このサンプルでは、コア ツールを使用して、最小限の労力でこれらの問題を処理する方法を示しています。

クラウド ネイティブまたはクラウドでホストされる既知のファイル

このパターンは、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 ソリューションとして単独で使用できますが、他の方法で作成されたホスト フィーチャ レイヤーの保守ツールと見なされるケースが 2 つあります。

  • レガシーのホスト フィーチャ レイヤーがすでに運用されています。
  • マルチレイヤー サービスやリレーションシップ クラスなどの複雑性が存在します。
    • Data Pipelines が、これらのプロパティーを使用してサービスを作成できません。

既存のワークフローは、レイヤーを作成するのに十分または必要であっても、Data Pipelines の使いやすさ、組織の共有モデル、SaaS ホスティング、スケジューリング機能といった利点が得られないこともあります。 このような場合は、Data Pipelines を保守ツールとして利用することができます。

このサンプルでは、ホスト レイヤーの保守の簡単な例を示しています。

ArcGIS Online ノートブックとクラウド ネイティブの GeoParquet

このパターンでは、Python ランタイム環境が拡張され、ArcGIS Online でホストされた Python ノートブックを使用し、GeoParquet 形式のデータを含むクラウド オブジェクト ストアにアクセスします。

ArcGIS ProArcGIS Enterprise Notebook Server のランタイム環境の拡張は一般的なパターンですが、あまり知られていない別の方法でも、ArcGIS Online 上のホスト ノートブックで同様の結果を得ることができます。 標準の Python ランタイムで使用可能な Python ライブラリーには、conda および pip パッケージ マネージャーが含まれています。通常は、pip の方が簡単なオプションです。 Python インターフェイスを提供する外部システムへの接続が必要な場合は、PyPi から簡単にインストールできる可能性があります。

このサンプルでは、pip を使用してローカル ノートブック ランタイムを拡張し、DuckDB を使用して Overture Maps Foundation の Places テーマ (hive パーティション クエリによる Amazon S3 オブジェクト ストアへのアクセス例) からのデータにアクセスします。すなわち、この場合は任意の数の GeoParquet ファイルがワイルドカード クエリでアクセスされます。 アクセスしてクエリした後で、データはイギリスのロンドンの関心地点のホスト フィーチャ レイヤーの更新に使用されます (世界中のどの場所でも同様にサポートできます)。

ArcGIS Online Notebook とクラウド データ ウェアハウス

このパターンでは、Snowflake の読み取りまたは書き込みをサポートするようにランタイム環境が拡張された、Online Notebook を使用しています。 どのクラウド ウェアハウスにも同様にアクセスできます

このパターンは、拡張ランタイム コンテナーを使用するという点で ArcGIS Online Notebook やクラウドネイティブの GeoParquet と似ていますが、クラウド ウェアハウスの処理能力が追加されます。 ArcGIS Pro と ArcGIS Enterprise は、Snowflake やその他のクラウド データ ウェアハウスへの接続をサポートしてクエリ レイヤーを作成します。このクエリ レイヤーは、ジオプロセシング ツールへの入力として使用したり、ArcGIS Pro マップや Web マップで視覚化したりできますが、このパターンを使用すると、Online Notebook の処理に SQL の機能を活用できます。 クラウド ウェアハウスはデータベースであるだけでなく、データ共有エコシステムでもあり、他の組織があらゆる規模のデータをクラウド ウェアハウスに共有し、それらのデータを組み合わせて知見と新しい結果を生み出すことができます。

このサンプルは、カリフォルニア州サンフランシスコ (または、世界中どこでも定義した場所) にある関心地点のホスト フィーチャ レイヤーを保守しています。 このデータは、Esri のビジネス パートナーである SafeGraph の Places データセットから取得されたものです。

メタデータの自動化

このパターンでは、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 エクステンションを使用して、大きな応答をページネーションによって JSON のチャンクで返され、その後解析する必要があります。

HTTP ベースの REST API は、多くの場合に JSON の応答を返します。JSON は人にもコンピューターにも読みやすく、柔軟なため多く使われていますが、JSON オブジェクトは型付けが緩やかで、多くの場合は構造化も順序付けもされていません。 応答性の理由から、API は論理データセットを断片 (「ページ」) で返すことがあります。これらの断片は順に生成されますが、クライアントで集約する必要があります。 ページネーションと定義されたスキーマに整形するというこれら 2 つの課題は、ローコード戦略で簡単に解決できます。

このサンプルでは、ページネーション対応 API を操作して、ArcGIS Online のホスト フィーチャ レイヤーと毎日データを同期する方法を示しています。

Web ツールとしての ETL のスケジューリング

このパターンでは、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 からアクセス可能であり、公開時に静的コピーとしてアップロードされていないとを確認する必要があります。

このサンプルは、RSS フィードの内容を ArcGIS Online のホスト フィーチャ レイヤーにミラーリングするために、1 日 2 回実行されるようスケジュールされた空間 ETL Web ツールの例を示しています。

Top