Azure データ エクスプローラーでのデータ インジェストAzure Data Explorer data ingestion

データ インジェストとは、Azure データ エクスプローラーで 1 つまたは複数のソースからデータ レコードを読み込んでテーブルを作成または更新するプロセスのことです。Data ingestion is the process used to load data records from one or more sources to create or update a table in Azure Data Explorer. 取り込まれたデータは、クエリに使用できるようになります。Once ingested, the data becomes available for query. 次の図は、データ インジェストを含む、Azure Data Explorer での作業のエンド ツー エンドのフローを示したものです。The diagram below shows the end-to-end flow for working in Azure Data Explorer, including data ingestion.

Data flow

データ インジェストを担当する Azure データ エクスプローラーのデータ管理サービスでは、次の機能が提供されます。The Azure Data Explorer data management service, which is responsible for data ingestion, provides the following functionality:

  1. データのプル: 外部ソース (Event Hubs) からデータをプルするか、または Azure キューからインジェスト要求を読み取ります。Data pull: Pull data from external sources (Event Hubs) or read ingestion requests from an Azure Queue.

  2. バッチ処理: 同じデータベースおよびテーブルに送られるデータをバッチ化して、インジェストのスループットを最適化します。Batching: Batch data flowing to the same database and table to optimize ingestion throughput.

  3. 検証:必要に応じて、事前検証と形式変換を行います。Validation: Preliminary validation and format conversion if necessary.

  4. データ操作: スキーマの照合と、データの整理、インデックス付け、エンコード、圧縮を行います。Data manipulation: Matching schema, organizing, indexing, encoding and compressing the data.

  5. インジェスト フローでの永続性ポイント: エンジンでのインジェストの負荷を管理し、一時的な障害時の再試行を処理します。Persistence point in the ingestion flow: Manage ingestion load on the engine and handle retries upon transient failures.

  6. データ取り込みのコミット: データをクエリで使用できるようにします。Commit the data ingest: Makes the data available for query.

インジェストの方法Ingestion methods

Azure データ エクスプローラーでは複数のインジェスト方法がサポートされており、それぞれに固有のターゲット シナリオ、利点、欠点があります。Azure Data Explorer supports several ingestion methods, each with its own target scenarios, advantages, and disadvantages. Azure Data Explorer では、一般的なサービスに対するパイプラインとコネクタ、SDK を使用するプログラムでのインジェスト、および探索のためのエンジンへの直接アクセスが提供されています。Azure Data Explorer offers pipelines and connectors to common services, programmatic ingestion using SDKs, and direct access to the engine for exploration purposes.

パイプライン、コネクタ、およびプラグインを使用したインジェストIngestion using pipelines, connectors, and plugins

現在、Azure Data Explorer は以下をサポートしています。Azure Data Explorer currently supports:

統合サービスを使用した取り込みIngestion using integration services

プログラムによるインジェストProgrammatic ingestion

Azure データ エクスプローラーで提供されている SDK を使用して、クエリとデータ インジェストを行うことができます。Azure Data Explorer provides SDKs that can be used for query and data ingestion. プログラムによるインジェストは、インジェスト プロセスの最中および後のストレージ トランザクションを最小限に抑えることによって、インジェスト コスト (COG) を削減するように最適化されています。Programmatic ingestion is optimized for reducing ingestion costs (COGs), by minimizing storage transactions during and following the ingestion process.

使用可能な SDK とオープン ソース プロジェクト:Available SDKs and open-source projects:

Kusto では、データの取り込みとクエリに使用できるクライアント SDK が提供されています。Kusto offers client SDK that can be used to ingest and query data with:

プログラムによるインジェストの手法:Programmatic ingestion techniques:

  • Azure Data Explorer のデータ管理サービスを介したデータの取り込み (高スループットで信頼性の高いインジェスト):Ingesting data through the Azure Data Explorer data management service (high-throughput and reliable ingestion):

    バッチ インジェスト (SDK によって提供): クライアントは Azure Blob Storage にデータをアップロードし (Azure データ エクスプローラーのデータ管理サービスで指定)、通知を Azure キューに投稿します。Batch ingestion (provided by SDK): the client uploads the data to Azure Blob storage (designated by the Azure Data Explorer data management service) and posts a notification to an Azure Queue. バッチ インジェストは、大量で信頼性が高く低コストのデータ インジェストに推奨される手法です。Batch ingestion is the recommended technique for high-volume, reliable, and cheap data ingestion.

  • Azure データ エクスプローラー エンジンへのデータの直接取り込み (探索とプロトタイプ作成に最適)。Ingesting data directly into the Azure Data Explorer engine (most appropriate for exploration and prototyping):

    • インライン インジェスト: 帯域内データを含む制御コマンド (.ingest inline) は、アドホックなテストを対象としています。Inline ingestion: control command (.ingest inline) containing in-band data is intended for ad hoc testing purposes.

    • クエリからの取り込み: クエリ結果を指す制御コマンド (.set、.set-or-append、.set-or-replace) は、レポートまたは小さい一時テーブルを生成するために使用されます。Ingest from query: control command (.set, .set-or-append, .set-or-replace) that points to query results is used for generating reports or small temporary tables.

    • ストレージからの取り込み: 外部に格納されたデータ (例: Azure Blob Storage) を使用する制御コマンド (.ingest into) では、データを効率的に一括インジェストできます。Ingest from storage: control command (.ingest into) with data stored externally (for example, Azure Blob Storage) allows efficient bulk ingestion of data.

さまざまな方法の待機時間:Latency of different methods:

方法Method LatencyLatency
インライン インジェストInline ingestion 即時Immediate
クエリからの取り込みIngest from query クエリ時間 + 処理時間Query time + processing time
ストレージからの取り込みIngest from storage ダウンロード時間 + 処理時間Download time + processing time
キューによるインジェストQueued ingestion バッチ処理時間 + 処理時間Batching time + processing time

処理時間はデータ サイズに依存し、数秒未満です。Processing time depends on the data size, less than a few seconds. バッチ処理時間の既定値は 5 分です。Batching time defaults to 5 minutes.

最も適切なインジェスト方法の選択Choosing the most appropriate ingestion method

データの取り込みを始める前に、次の点を確認する必要があります。Before you start to ingest data, you should ask yourself the following questions.

  • データはどこに存在するか?Where does my data reside?
  • データはどのような形式で、それは変更できるか?What is the data format, and can it be changed?
  • クエリする必要があるフィールドは何か?What are the required fields to be queried?
  • 予想されるデータ量と増加速度は?What is the expected data volume and velocity?
  • 予想されるイベントの種類の数 (テーブルの数に反映される)?How many event types are expected (reflected as the number of tables)?
  • イベントのスキーマはどれくらいの頻度で変更されるか?How often is the event schema expected to change?
  • データを生成するノードの数?How many nodes will generate the data?
  • ソース OS は何か?What is the source OS?
  • 待機時間の要件?What are the latency requirements?
  • 既存のマネージド インジェスト パイプラインの 1 つを使用できるか?Can one of the existing managed ingestion pipelines be used?

Event Hub や IoT Hub などのメッセージング サービスに基づく既存のインフラストラクチャがある組織では、おそらく、コネクタを使用するのが最適なソリューションです。For organizations with an existing infrastructure that are based on a messaging service like Event Hub and IoT Hub, using a connector is likely the most appropriate solution. キューによるインジェストは、大量のデータに適しています。Queued ingestion is appropriate for large data volumes.

サポートされるデータ形式Supported data formats

クエリからの取り込み以外のすべてのインジェスト方法では、Azure Data Explorer が解析できるようにデータを書式設定します。For all ingestion methods other than ingest from query, format the data so that Azure Data Explorer can parse it.

  • 以下のデータ形式がサポートされます。TXT、CSV、TSV、TSVE、PSV、SCSV、SOH、JSON (行区切り、複数行)、Avro、および Parquet。The supported data formats are: TXT, CSV, TSV, TSVE, PSV, SCSV, SOH, JSON (line-separated, multi-line), Avro, and Parquet.
  • ZIP および GZIP 圧縮をサポートします。Supports ZIP and GZIP compression.

注意

データが取り込まれるときに、対象のテーブル列に基づいてデータ型が推論されます。When data is being ingested, data types are inferred based on the target table columns. レコードが不完全な場合、またはフィールドを必要なデータ型として解析できない場合は、対応するテーブル列に null 値が設定されます。If a record is incomplete or a field cannot be parsed as the required data type, the corresponding table columns will be populated with null values.

インジェストの推奨事項と制限事項Ingestion recommendations and limitations

  • 取り込まれたデータの効果的なアイテム保持ポリシーは、データベースのアイテム保持ポリシーから派生します。The effective retention policy of ingested data is derived from the database's retention policy. 詳しくは、「Retention policy」(アイテム保持ポリシー) をご覧ください。See retention policy for details. データを取り込むには、テーブル取り込み者またはデータベース取り込み者のアクセス許可が必要です。Ingesting data requires Table ingestor or Database ingestor permissions.
  • インジェストでは、5 GB の最大ファイル サイズがサポートされます。Ingestion supports a maximum file size of 5 GB. 100 MB から 1 GB の間のファイルを取り込むことをお勧めします。The recommendation is to ingest files between 100 MB and 1 GB.

スキーマ マッピングSchema mapping

スキーマ マッピングは、ソースのデータ フィールドをターゲットのテーブル列にバインドするのに役立ちます。Schema mapping helps bind source data fields to destination table columns.

次の手順Next steps