イベントスクロール操作を使用して分析データをエクスポートする

使用/events/scrollREST API を使用して 10,000 件以上の分析イベント レコードをエクスポートする操作。

アナリティクスイベントデータを取得する標準的な方法は、API Connectアナリティクス REST APIを使用しています/eventsAPI 呼び出し。 の/eventsAPI 呼び出しは、最新のイベント データを高速に取得するように最適化されており、最大 10,000 件の API イベント レコードを返すように制限されています。 10,000件を超えるイベントレコードを取得する場合は、/events/scroll大量の分析イベント データの取得に最適化された API。

分析データをクエリすると/events/scrollOpenSearchクエリに一致するすべてのイベント レコードを検索し、スクロール コンテキストと呼ばれるポインターを作成します。 次に、スクロール コンテキストを使用して、イベント データをバッチで取得します。

重要:結果セットとスクロールコンテキストの作成には多くのOpenSearchリソース。 複数の異なる/events/scroll同時にクエリを実行し、イベント データが取得された後にスクロール コンテキストを削除します。

分析イベントのエクスポート/events/scroll

/events/scroll操作はイベント データをバッチで返します。 最初の呼び出しでバッチサイズを定義します。/events/scroll 、その後の呼び出しで各バッチを取得します。 以降の各呼び出しは/events/scrollスクロール コンテキスト キープアライブ時間と呼ばれる一定の時間内に実行されます。 手順は次のとおりです。

  1. 最初に作る/events/scroll電話。 スクロール操作のバッチ サイズとキープアライブ時間を指定します。 たとえば、イベントデータを1000回ずつ返して、スクロールコンテキストを10分間有効にするには、次のJSONをPOSTします。/events/scroll :
    {
      "size": 1000, # Return the first 1000 event records.
      "scroll": 10m # Keep the scroll context alive for 10 minutes.
    }
    • sizeバッチ サイズを定義します。
    • scrollキープアライブ時間を定義し、次の形式を使用します<数値><単位>、 例えば: 30s、 5m、 3h、 1d。 最大値はscrollは1d。
    応答の例:
    {
        "total": 5926, # The total events found that match the query.
        "scroll_id": "FGl....", # Scroll context id to be used to get the next batch.
        "events": [...] # First batch of event data.
    }
  2. 次を作る/events/scroll呼び出し、指定scroll_id前回の回答より:
    {
      "size": 1000,
      "scroll_id": "<as returned from previous call>",
      "scroll": 10m 
    }
    APIは次の1000件のイベントレコードのバッチを返し、新しいscroll_id次回の通話のために。
    注記:もしあなたのscroll_id期限が切れると、次の応答が返されます。
    {
      "status": 404,
      "message": [
        {
          "trace": "7c7b3b11ee0e95b61452e8a78086d8e2",
          "errors": [
            {
              "code": "search_context_missing_exception",
              "message": "No search context found for id [48420]",
              "more_info": ""
            }
          ]
        }
      ]
    }

    もしあなたのscroll_id期限が切れた場合は、再度開始する必要があります。 スクロールコンテキストのキープアライブ時間を長く設定して、イベントレコードバッチが返されるまでの時間を増やし、次の/events/scroll電話をかける。

  3. 作り続ける/events/scroll通話、更新scroll_id毎回、前回の呼び出しからの応答を返します。
  4. イベントデータを取得するための最後の呼び出しの後、POSTでスクロールコンテキストを削除します。/events/scroll/delete :
    {"scroll_id": "<as returned from previous call>"}
    応答の例:
    {
        "succeeded": true,
        "num_freed": 15
    }
    注記:スクロール コンテキストは有効期限が切れると自動的に削除されますが、キープアライブ時間が長い場合は、リソースを解放するために明示的に削除することをお勧めします。

実例

次の例は、curlコマンドを使用してAPIイベントデータを手動で取得するには、/events/scroll API。
注記:大量の分析データの場合、手動で取得するにはcurl遅く、人為的ミスが発生しやすくなります。 より良い方法は、スクリプトを書いて/events/scroll呼び出して更新するscroll_id各通話。 見るhttps://ibm.biz/apic-analytics-events-scroll例えばPython脚本。
  1. 合計イベント レコードの数を取得して、最適なバッチ サイズと呼び出し回数を決定します。
    curl -k -X GET --url 'https://example.api.connect.com/analytics/analytics/cloud/events/count' -H 'Authorization: Bearer <bearer_token>'
    {
        "total": 12453
    }

    12453 のイベントの場合、バッチ サイズは 1250、呼び出しの合計数は 10 で、出力のサイズと呼び出し数のバランスが適切になる可能性があります。

  2. 最初のリクエストでは、バッチ サイズを 1250 に指定し、スクロール コンテキストのキープアライブ時間を 5 分に指定します。
    curl -k -X POST -d '{"size": "1250", "scroll": "5m"}' --url 'https://example.api.connect.com/analytics/analytics/cloud/events/scroll' -H 'Content-Type: application/json' -H 'Authorization: Bearer <bearer_token>'
    戻り:
    {
        "total": 12453, # The total events found that match the query.
        "scroll_id": "<scroll_id>",
        "events": [...] # First batch of 1250 events.
    }
  3. 2番目のリクエストを行い、scroll_id前回のリクエストから返された:
    curl -k -X POST -d '{"size": "1250", "scroll": "5m", "scroll_id": "<scroll_id from previous response>"}' --url 'https://example.api.connect.com/analytics/analytics/cloud/events/scroll' -H 'Content-Type: application/json' -H 'Authorization: Bearer <bearer_token>'
  4. リクエストをさらに8回繰り返し、scroll_id毎回、前回のリクエストからの出力を使用します。

    合計イベント数は 12453 でバッチ サイズは 1250 なので、最後のリクエストでは 1203 のイベントのみが返されます。

    その後のリクエストはscroll_id空のイベント配列を返します。

  5. スクロール コンテキストを削除します。
    curl -k -X POST -d '{"scroll_id": "<scroll_id from previous response>"}' --url 'https://example.api.connect.com/analytics/analytics/cloud/events/scroll/delete' -H 'Content-Type: application/json' -H 'Authorization: Bearer <bearer_token>'

パフォーマンス比較/events/scrollそして/events

次の表は、スクリプト呼び出しを使用して分析イベント データをクエリする場合のパフォーマンス比較を示しています。 時間は、すべてのイベント レコードを取得するのにかかる合計時間 (秒単位) です。 の/eventsAPI は 10000 件を超えるイベント (1000 件以上のバッチも) を取得できないため、これらのフィールドは n/a としてマークされます。
注記:分析サブシステムの応答時間は、API イベント レコードのサイズ、レコードの合計数、使用可能なハードウェア リソースによって異なる場合があります。
表 1. 1000件のイベントレコードを取得しています(5.3メガバイト
バッチ・サイズ 呼び出し回数 /events time /events/scroll time
100 10 7 9
500 2 3 4
1000 1 該当なし 3
2000 年 1 該当なし 5
表 2. 10,000 件のイベント レコードを取得しています (26 MB)
バッチ・サイズ 呼び出し回数 /events time /events/scroll time
100 100 67 75
500 20 27 32
1000 10 該当なし 24
2000 年 5 該当なし 20
表 3. 100,000 件のイベント レコードを取得しています (265 MB)
バッチ・サイズ 呼び出し回数 /events time /events/scroll time
100 1000 該当なし 876
500 200 該当なし 299
1000 100 該当なし 258
2000 年 50 該当なし 196
表 4。 760,265 件のイベント レコード (2 GB) を取得しています
バッチ・サイズ 呼び出し回数 /events time /events/scroll time
100 7603 該当なし 5647
500 1521 該当なし 2423
1000 761 該当なし 2158
2000 年 381 該当なし 1919