• ログイン

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

NerdGraphチュートリアル:NRQLクエリを非同期で実行する

NerdGraph を使用して NRQL クエリを実行できます。さらに、NerdGraph を使用して非同期 NRQL クエリを実行することもできます。非同期クエリはバックグラウンドで実行され、フォローアップ リクエストを作成して、クエリ結果またはクエリ ステータスを取得できます。このタイプのクエリは、ブラウザのタイムアウトや HTTP 接続のタイムアウトなどの問題によってクエリが中断されるのを回避します。これは、完了までに長い時間がかかるクエリを実行する場合に特に便利です。

要件

通常のNRQLクエリの期間制限は1分です。10分の制限でクエリを実行するには、 DataPlusが必要です。

非同期クエリの例

これは、非同期クエリのNerdGraph呼び出しの例です。async: trueは、クエリを非同期にするものです。このクエリは、デフォルトのタイムアウトである5秒以内に完了すると、結果を返します。それ以外の場合は、 nrqlQueryProgressフィールドへのフォローアップクエリで使用するためにqueryProgressデータを返します。

{
   actor {
      account(id: YOUR_ACCOUNT_ID) {
         nrql(query: "SELECT * FROM Transaction", async: true) {
            results
            queryProgress {
               queryId
               completed
               retryAfter
               retryDeadline
               resultExpiration
            }
         }
      }
   }
}

非同期クエリの結果またはステータスを取得する

クエリがデフォルトのタイムアウトを超えると、クエリIDが返されます。そのIDを取得し、2番目のクエリを実行して、クエリ結果(終了している場合)、またはそのクエリのステータスを取得できます。

{
   actor {
      account(id: YOUR_ACCOUNT_ID) {
         nrqlQueryProgress(queryId: "YOUR_QUERY_ID") {
            results
            queryProgress {
               queryId
               completed
               retryAfter
               retryDeadline
               resultExpiration
            }
         }
      }
   }
}

このクエリに関するいくつかの重要な詳細:

  • queryIdは、元の非同期クエリによって返されたqueryProgressデータから取得されます。
  • account引数は、元のクエリのaccount引数と一致する必要があります。
  • このクエリは、非同期実行が完了した場合に結果を返します。それ以外の場合は、 queryProgressデータを返します。
  • 結果またはエラーが返されるまで、クエリを逐語的に繰り返すことができます。
Copyright © 2022 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.